Je parcours un tableau d'objets et je souhaite supprimer l'un des objets en fonction de sa propriété 'id', mais mon code ne fonctionne pas.
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
}
}
}
Aucune suggestion. Merci.
Réponses:
la source
if(isset($element['id']) && $element['id'] == 'searched_value') { unset($array[$elementKey]); }
Je pense qu'à l'époque, je viens de copier et de modifier son code pour lui montrer comment le faireunset
correctement.Il semble que votre syntaxe pour unset n'est pas valide et que l'absence de réindexation pourrait causer des problèmes à l'avenir. Voir: la section sur les tableaux PHP .
La syntaxe correcte est indiquée ci-dessus. Gardez également à l'esprit les valeurs de tableau pour la réindexation, afin de ne jamais indexer quelque chose que vous avez précédemment supprimé.
la source
Vous pouvez également utiliser des références sur les
foreach
valeurs:la source
$element = null
ne fonctionnerait PAS, la longueur de$array
reste la même, il contiendrait juste des valeurs nullesCela devrait faire l'affaire.....
la source
Soyez prudent avec la réponse principale.
avec
et appeler la fonction
il retourne
au lieu de
C'est parce que unset ne réindexe pas le tableau.
Il se réindexe. (si nous en avons besoin)
la source
Je ne suis pas vraiment un programmeur php, mais je peux dire qu'en C # vous ne pouvez pas modifier un tableau tout en l'itérant. Vous pouvez essayer d'utiliser votre boucle foreach pour identifier l'index de l'élément ou les éléments à supprimer, puis supprimer les éléments après la boucle.
la source