Подтвердить что ты не робот

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()), так что "третий" заменяет место "второго" и "четвертого" места "третьего"

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

спасибо

4b9b3361

Ответ 1

$array = array_values($array);

Ответ 2

Я думаю, что лучшее решение, которое я нашел, это:

Решение 1

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

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

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

Решение 2

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

array_splice(array_filter($array), 0, 0);