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