На этот вопрос есть несколько ответов, но я хочу добавить что-то еще, потому что, когда я использовал unset
или array_diff
, у меня было несколько проблем, чтобы играть с индексами нового массива, когда конкретный элемент был удален (потому что начальный индекс сохранены)
Вернусь к примеру:
$array = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi');
$array_without_strawberries = array_diff($array, array('strawberry'));
или
$array = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi');
unset($array[array_search('strawberry', $array)]);
Если вы напечатаете результат, вы получите:
foreach ($array_without_strawberries as $data) {
print_r($data);
}
Результат:
> apple
> orange
> blueberry
> kiwi
Но индексы будут сохранены, и вы получите доступ к своему элементу, например:
$array_without_strawberries[0] > apple
$array_without_strawberries[1] > orange
$array_without_strawberries[3] > blueberry
$array_without_strawberries[4] > kiwi
И поэтому окончательный массив не переиндексируется. Так что вам нужно добавить после unset
или array_diff
:
$array_without_strawberries = array_values($array);
После этого ваш массив будет иметь нормальный индекс:
$array_without_strawberries[0] > apple
$array_without_strawberries[1] > orange
$array_without_strawberries[2] > blueberry
$array_without_strawberries[3] > kiwi
Похожие по теме: Re-Index Array
Надеюсь, это поможет