Mais uma dica, para quem está iniciando no php, dando continuidade ao tutorial anterior. Vamos entender como varrer um array multidimensional com php
É muito mais simples do que em outras linguagens. Do qual você teria que colocar dois for e ficar contando… No php você tem a função foreach, que varre o array, e faz a iteração automaticamente.
Rodando o array
supondo um retorno de banco que possua vários arrays um dentro de outro, para acessarmos todos os itens desse array faríamos o seguinte:
<?php $arr_result = array( 'maçã', 'pêra', 'uva', 'outros' => array( 'jaca', 'melão', 'melância' ) ); foreach($arr_result as $data) { if(is_array($data)) { foreach($data as $other_data) { echo $other_data, '<br/>'; } } else { echo $data, '<br/>'; } }
Explicando o código
As primeiras linhas são a definição de um array, para podermos fazer as iterações.
A linha do foreach os parâmetros são o array, e $data é a variável que irá receber o valor da iteração do momento.
A função is_array verifica se o parâmetro passado é ou não um array.
A função echo ele exibe na tela o valor contido na variável.Nos próximos capítulos dessa novela posts, explico o porque de usar a virgula, e não a concatenação. De antemão lhe aconselho a usar dessa forma.
Função recursiva
Esse código seria muito eficiente para um array que sabemos a definição do tamanho, e para uma pequena varredura.
Porem para um array enorme com muitas dimensões seria um código imenso, por isso podemos utilizar da recursividade.
function recursive_show_array($arr) { foreach($arr as $value) { if(is_array($value)) { recursive_show_array($value); } else { echo $value; } } }
Dessa forma se ele for array, ele irá chamar novamente a função e fazer o loop do “sub-array”, dessa forma todos os níveis serão atingidos.
Você pode conferir as funções na documentação do php:
http://php.net/is_array
http://php.net/foreach
http://php.net/echo
Muito obrigado =) É uma função muito boa. Só estava achando explicações usando o array_walk_recursive, mas logo no primeiro exemplo eles não ensinam no site oficial como que a função pega os parametros. Obrigado mesmo =)
Muito boa mesmo! Vou adaptar ela para fazer tabelas agora, obrigado!
Hi There Would You Mind Letting Me Know Which Web Host You’re Using? I’ve Loaded Your Blog In 3 Completely Different Browsers And I Must Say This Blog Loads A Lot Quicker Then Most. Can You Recommend A Good Internet Hosting Provider At A Honest Price? Kudos, I Appreciate It!
Use Hoo.st
Salvou minha vida! Muito bom.
Brother, muito obrigado por compartilhar esta solução autoexplicativa. Finalmente entendi como o array multidimensional se comporta no PHP. Tava pingando em muito código tentando entender…
Eu que agradeço o comentário.