На этот вопрос есть несколько ответов, но я хочу добавить что-то еще, потому что когда я использовал 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
Надеюсь, это поможет