Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Acredito que essa seja uma dúvida básica, porém quem não pergunta não evolui.
Tenho uma função que pega dados de um XML e imprime na tela. Mas quero que ela retorne um array com os mesmos dados que ele imprime na tela.
// isso funciona para imprimir na tela
[...]
$xml = simplexml_load_string($dados);
foreach($xml->arquivos as $arquivo){
echo $arquivos->nome;
echo $arquivos->tamanho;
}mas se eu fizer isso aqui para retornar o array, somente o ultimo elemento é retornado :(
foreach($xml->arquivos as $arquivo){
$arr = array('nome' => $arquivos->nome);
}
como fazer o array retornar tudo certinho?
>
tente o seguinte:
$lista = array();
foreach($xml->arquivos as $arquivo){
$lista[] = $arquivo;
}
Funcionou perfeitamente, qual a lógica dessa solução? onde era meu erro?
o seu exemplo:
$arr = array('nome' => $arquivos->nome);
se o loop der a 1ª volta, $arr vai ser o nome_1
se o loop der a 2ª volta, $arr vai ser o nome_2
se o loop der a 3ª volta, $arr vai ser o nome_3
pq você esta sempre iniciando a variavel $arr
usando $lista[], você esta atribuindo um indice em cada volta do loop
$lista[ 1 ], $lista[ 2 ], $lista[ 3 ]...
você poderia fazer $arr .= array('nome' => $arquivos->nome);
mas recomendo $lista[]
deu pra entender?
>
o seu exemplo:
$arr = array('nome' => $arquivos->nome);
se o loop der a 1ª volta, $arr vai ser o nome_1
se o loop der a 2ª volta, $arr vai ser o nome_2
se o loop der a 3ª volta, $arr vai ser o nome_3
pq você esta sempre iniciando a variavel $arr
usando $lista[], você esta atribuindo um indice em cada volta do loop
$lista[ 1 ], $lista[ 2 ], $lista[ 3 ]...
você poderia fazer $arr .= array('nome' => $arquivos->nome);
mas recomendo $lista[]
deu pra entender?
Perfeitamente amigo! muito obrigado pela resposta
bacana :)
estamos ai pra isso
tente o seguinte: