Ich iteriere durch ein Array von Objekten und möchte eines der Objekte basierend auf seiner 'id'-Eigenschaft löschen, aber mein Code funktioniert nicht.
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
}
}
}
Irgendwelche Vorschläge. Vielen Dank.
Antworten:
quelle
if(isset($element['id']) && $element['id'] == 'searched_value') { unset($array[$elementKey]); }
denke ich, als ich gerade seinen Code kopierte und modifizierte, um ihm zu zeigen, wie man esunset
richtig macht.Es sieht so aus, als ob Ihre Syntax für unset ungültig ist und das Fehlen einer Neuindizierung in Zukunft Probleme verursachen könnte. Siehe: den Abschnitt über PHP-Arrays .
Die korrekte Syntax ist oben dargestellt. Denken Sie auch an Array-Werte für die Neuindizierung, damit Sie niemals etwas indizieren, das Sie zuvor gelöscht haben.
quelle
Sie können auch Verweise auf
foreach
Werte verwenden:quelle
$element = null
würde NICHT funktionieren, die Länge$array
bleibt gleich, es würde nur Nullen enthaltenDies sollte den Trick tun .....
quelle
Seien Sie vorsichtig mit der Hauptantwort.
mit
und Aufrufen der Funktion
es kehrt zurück
anstatt
Dies liegt daran, dass unset das Array nicht neu indiziert.
Es indiziert neu. (wenn wir es brauchen)
quelle
Ich bin kein großer PHP-Programmierer, aber ich kann sagen, dass Sie in C # ein Array nicht ändern können, während Sie es durchlaufen. Möglicherweise möchten Sie versuchen, mit Ihrer foreach-Schleife den Index des Elements oder der zu entfernenden Elemente zu identifizieren und die Elemente nach der Schleife zu löschen.
quelle