Na to pytanie jest kilka odpowiedzi ale chcę dodać coś więcej bo gdy użyłem unset
lub array_diff
miałem kilka problemów z zabawą z indeksami nowej tablicy gdy dany element został usunięty (bo indeks początkowy jest zapisywany)
Wracam do przykładu:
$array = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi');
$array_without_strawberries = array_diff($array, array('strawberry'));
lub
$array = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi');
unset($array[array_search('strawberry', $array)]);
Jeśli wydrukujesz wynik, otrzymasz:
foreach ($array_without_strawberries as $data) {
print_r($data);
}
Wynik:
> apple
> orange
> blueberry
> kiwi
Ale indeksy zostaną zapisane i będziesz mieć dostęp do swojego elementu, takiego jak:
$array_without_strawberries[0] > apple
$array_without_strawberries[1] > orange
$array_without_strawberries[3] > blueberry
$array_without_strawberries[4] > kiwi
Dlatego ostateczna tablica nie jest ponownie indeksowana. Musisz więc dodać po unset
lub array_diff
:
$array_without_strawberries = array_values($array);
Po tym twoja tablica będzie miała normalny indeks:
$array_without_strawberries[0] > apple
$array_without_strawberries[1] > orange
$array_without_strawberries[2] > blueberry
$array_without_strawberries[3] > kiwi
Powiązane z tym postem: Ponowne indeksowanie tablicy
Mam nadzieję, że to pomoże