⊗ppPmRcMA 220 of 447 menu

Recursão e Estruturas Multidimensionais em PHP

Dado um array multidimensional com nível arbitrário de aninhamento, por exemplo, como este:

<?php $arr = [ 1, [ 2, 7, 8 ], [ 3, 4, [5, [6, 7]], ] ]; ?>

Como você pode ver, este array tem uma estrutura complexa, e assume-se que essa estrutura pode ser arbitrária e os níveis de aninhamento podem ser tão profundos quanto necessário.

Suponha que queiramos exibir todos os elementos primitivos (ou seja, que não são arrays) do nosso array. Neste caso, para iterar sobre esse array simplesmente não será possível usar loops, pois o array tem uma estrutura irregular e um nível de aninhamento desconhecido.

No entanto, para iterar sobre esse array, será muito conveniente usar recursão.

Para começar, vamos criar uma função que receberá nosso array como parâmetro, e dentro da função faremos um loop para percorrer nosso array:

<?php function func($arr) { foreach ($arr as $elem) { echo $elem; } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]); ?>

O loop que criamos irá iterar apenas sobre os elementos do array principal. Ou seja, primeiro ele exibirá 1, depois [2, 7, 8], e depois [3, 4, [5, [6, 7]].

Agora, vamos separar no loop os elementos primitivos e os elementos que são arrays:

<?php function func($arr) { foreach ($arr as $elem) { if (is_array($elem)) { // elemento é um array } else { // elemento é um primitivo echo $elem; } } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]); ?>

E agora vamos fazer com que, se o nosso elemento for um array, a função chame a si mesma, passando esse array como parâmetro:

<?php function func($arr) { foreach ($arr as $elem) { if (is_array($elem)) { func($elem); } else { echo $elem; } } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]); ?>

Dado um array multidimensional com nível arbitrário de aninhamento, por exemplo, como este:

<?php $arr = [1, 2, 3, [4, 5, [6, 7]], [8, [9, 10]]]; ?>

Usando recursão, exiba todos os elementos primitivos deste array na tela.

Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar