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