Eu itero através de uma matriz de objetos e quero excluir um dos objetos com base em sua propriedade 'id', mas meu código não 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
}
}
}
Alguma sugestão. Obrigado.
Respostas:
fonte
if(isset($element['id']) && $element['id'] == 'searched_value') { unset($array[$elementKey]); }
Eu acho que no momento eu apenas copiei e modifiquei seu código para mostrar a ele como fazerunset
corretamente.Parece que sua sintaxe para a definição é inválida e a falta de reindexação pode causar problemas no futuro. Veja: a seção sobre matrizes PHP .
A sintaxe correta é mostrada acima. Lembre -se também de valores de matriz para reindexar, para que você nunca indexe algo que você excluiu anteriormente.
fonte
Você também pode usar referências em
foreach
valores:fonte
$element = null
não iria funcionar, o comprimento$array
permanece o mesmo, seria apenas conter nulosIsso deve fazer o truque .....
fonte
Tenha cuidado com a resposta principal.
com
e chamando a função
retorna
ao invés de
Isso ocorre porque a configuração não reindexa a matriz.
Isso reindexa. (se precisarmos)
fonte
Eu não sou muito programador de php, mas posso dizer que em C # você não pode modificar uma matriz enquanto itera. Você pode tentar usar o loop foreach para identificar o índice do elemento ou elementos a serem removidos e excluir os elementos após o loop.
fonte