Recorro una matriz de objetos y quiero eliminar uno de los objetos en función de su propiedad 'id', pero mi código no funciona.
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
}
}
}
Alguna sugerencia. Gracias.
Respuestas:
fuente
if(isset($element['id']) && $element['id'] == 'searched_value') { unset($array[$elementKey]); }
, creo que en el momento en que acabo de copiar y modificar su código para mostrarle cómo hacerlounset
correctamente.Parece que su sintaxis para desarmar no es válida, y la falta de reindexación puede causar problemas en el futuro. Ver: la sección sobre matrices PHP .
La sintaxis correcta se muestra arriba. También tenga en cuenta los valores de matriz para reindexar, de modo que nunca indexe algo que eliminó anteriormente.
fuente
También puede usar referencias en
foreach
valores:fuente
$element = null
NO funcionaría, la longitud de los$array
restos sigue siendo la misma, solo contendría nulosEsto debería funcionar.....
fuente
Ten cuidado con la respuesta principal.
con
y llamando a la función
vuelve
en vez de
Esto se debe a que unset no vuelve a indexar la matriz.
Se reindexa. (si lo necesitamos)
fuente
No soy un gran programador de php, pero puedo decir que en C # no se puede modificar una matriz mientras se itera a través de ella. Es posible que desee intentar usar su bucle foreach para identificar el índice del elemento, o elementos para eliminar, luego elimine los elementos después del bucle.
fuente