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

Есть 2 функции.

  1. Поиск элементов массива для заданной строки
  2. unset (), если строка не найдена

$array = array("first", "second", "third", "fourth");

 foreach($array as $i=> $string) { if(stristr($string, "e")) { unset($array[$i]); } } с 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" 

благодаря

Solutions Collecting From Web of "PHP: переупорядочить массивы после unset ()"

 $array = array_values($array); 

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

Решение 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);