Je parcours un tableau d'objets et 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.
foreach($array as $elementKey => $element) {
foreach($element as $valueKey => $value) {
if($valueKey == 'id' && $value == 'searched_value'){
//delete this particular object from the $array
unset($array[$elementKey]);
}
}
}
Vous pouvez également utiliser des références sur les valeurs foreach
:
foreach($array as $elementKey => &$element) {
// $element is the same than &$array[$elementKey]
if (isset($element['id']) and $element['id'] == 'searched_value') {
unset($element);
}
}
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 PHP les tableaux =.
La syntaxe correcte est indiquée ci-dessus. Gardez également à l'esprit tableau-valeurs pour la réindexation, afin de ne jamais indexer quelque chose que vous avez précédemment supprimé.
Cela devrait faire l'affaire.....
reset($array);
while (list($elementKey, $element) = each($array)) {
while (list($key, $value2) = each($element)) {
if($key == 'id' && $value == 'searched_value') {
unset($array[$elementKey]);
}
}
}
Je ne suis pas un grand programmeur php, mais je peux dire qu'en C #, vous ne pouvez pas modifier un tableau en le parcourant. Vous voudrez peut-être essayer d’utiliser votre boucle foreach pour identifier l’index de l’élément ou les éléments à supprimer, puis supprimez les éléments après la boucle.