PHP: переупорядочить массивы после unset ()

Здесь задействованы 2 функции.

Поиск элементов массива по заданной строкеunset () элемент массива, если строка не найдена
$array = array("first", "second", "third", "fourth");

foreach($array as $i=> $string) {  
 if(stristr($string, "e")) {  
    unset($array[$i]);
 }   

}

second это элемент массива с символом 'e'. Если этоunset, $array[1] будет оставлено пустым:

$array[0] = "first"  
$array[1] = ""  
$array[2] = "third"  
$array[3] = "fourth"

я хочу$array[1] быть удаленным из массива (как вarray_shift()), чтобыthird занимает местоsecond а такжеfourth местоthird:

$array[0] = "first"    
$array[1] = "third"  
$array[2] = "fourth"
 Bot20 сент. 2010 г., 19:02
Вы также должны использовать array_filter в сочетании с array_values.

Ответы на вопрос(2)

Решение Вопроса
$array = array_values($array);
 Zebra20 сент. 2010 г., 19:08
@ Wrikken, глядя на это, спасибо!
 Zebra20 сент. 2010 г., 19:08
благодарю вас! идеально!
 Sambhav Pandey25 авг. 2016 г., 10:43
Очень красиво, идеально
 Wrikken20 сент. 2010 г., 18:54
+1, это проще всего, хотя можно было бы использоватьSPLDoublyLinkedList если вы хотите, чтобы это было сделано автоматически.

Решение 1

если вы просто хотите удалить только один элемент:

  array_splice($array,1,1); // all keys will be reindexed from 0

где вторым и третьим параметрами являются смещение (ключ) и длина (сколько удалить)

Решение 2

Лучше всего удалить несколько ключей: используйтеarray_filter() чтобы удалить все пустые строки и значение Falsey из массива, тоarray_splice() изменить порядок:

array_splice(array_filter($array), 0, 0);
 deemi-D-nadeem20 нояб. 2017 г., 11:48
хороший ответ ... для многомерной + сессии

Ваш ответ на вопрос