Mais uma dica, para quem está iniciando no php, dando continuidade ao tutorial anterior. Vamos entender como varrer um array multidimensional com php

foreach

É 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

Written by vinicius