recorrer multidimensional elementos comparar asociativo array agregar php foreach unset arrays

multidimensional - php array key value



¿Cómo eliminar el objeto de la matriz dentro del ciclo foreach? (5)

Repetiré una serie 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.


Esto debería funcionar.....

reset($array); while (list($elementKey, $element) = each($array)) { while (list($key, $value2) = each($element)) { if($key == ''id'' && $value == ''searched_value'') { unset($array[$elementKey]); } } }


No soy muy 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 ciclo foreach para identificar el índice del elemento o los elementos que desea eliminar, luego elimine los elementos después del ciclo.


Parece que su sintaxis para el desarmado no es válida, y la falta de reindexación podría causar problemas en el futuro. Ver: la sección sobre matrices PHP .

La sintaxis correcta se muestra arriba. También tenga en cuenta array-values de array-values para reindexar, de modo que nunca indexe algo que haya borrado previamente.


También puede usar referencias en los valores foreach :

foreach($array as $elementKey => &$element) { // $element is the same than &$array[$elementKey] if (isset($element[''id'']) and $element[''id''] == ''searched_value'') { unset($element); } }


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]); } } }