Iteruję przez tablicę obiektów i chcę usunąć jeden z obiektów na podstawie jego właściwości „id”, ale mój kod nie działa.
foreach($array as $element) {
foreach($element as $key => $value) {
if($key == 'id' && $value == 'searched_value'){
//delete this particular object from the $array
unset($element);//this doesn't work
unset($array,$element);//neither does this
}
}
}
Jakieś sugestie. Dzięki.
Odpowiedzi:
źródło
if(isset($element['id']) && $element['id'] == 'searched_value') { unset($array[$elementKey]); }
Myślę, że wtedy właśnie skopiowałem i zmodyfikowałem jego kod, aby pokazać mu, jak to zrobićunset
poprawnie.Wygląda na to, że twoja składnia unset jest nieprawidłowa, a brak ponownego zindeksowania może spowodować problemy w przyszłości. Zobacz: sekcja o tablicach PHP .
Prawidłowa składnia jest pokazana powyżej. Pamiętaj również o wartościach tablicowych do ponownego zindeksowania, więc nigdy nie indeksujesz czegoś, co wcześniej usunąłeś.
źródło
Możesz również użyć odwołań do
foreach
wartości:źródło
$element = null
NIE zadziała, długość$array
pozostaje taka sama, po prostu zawiera wartości nullTo powinno załatwić sprawę .....
źródło
Uważaj na główną odpowiedź.
z
i wywołując funkcję
wraca
zamiast
Dzieje się tak, ponieważ brak ustawienia nie powoduje ponownego indeksowania tablicy.
To reindeksuje. (jeśli tego potrzebujemy)
źródło
Nie jestem programistą php, ale mogę powiedzieć, że w C # nie można modyfikować tablicy podczas iteracji. Możesz spróbować użyć pętli foreach do zidentyfikowania indeksu elementu lub elementów do usunięcia, a następnie usunąć elementy po pętli.
źródło