⊗ppPmRcMA 220 of 447 menu

Recursión y estructuras multidimensionales en PHP

Tenemos un array multidimensional de nivel arbitrario de anidamiento, por ejemplo, como este:

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

Como puedes ver, este array tiene una estructura compleja, y se supone que esta estructura puede ser arbitraria y los niveles de anidamiento pueden ser tan profundos como se desee.

Supongamos que queremos mostrar en pantalla todos los elementos primitivos (es decir, que no son arrays) de nuestro array. En este caso, para recorrer dicho array simplemente no podremos usar bucles, porque el array tiene una estructura irregular y un nivel de anidamiento desconocido.

Sin embargo, para recorrer dicho array será muy conveniente usar recursión.

Para empezar, crearemos una función, a la cual pasaremos nuestro array como parámetro, y dentro de la función crearemos un bucle para recorrer nuestro array:

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

El bucle que hemos creado solo recorrerá los elementos del array principal. Es decir, primero mostrará 1, luego [2, 7, 8], y luego [3, 4, [5, [6, 7]].

Ahora, en el bucle, separaremos los elementos primitivos y los elementos que son arrays:

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

Y ahora hagamos que si nuestro elemento es un array, la función se llame a sí misma, pasando este 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 un array multidimensional de nivel arbitrario de anidamiento, por ejemplo, como este:

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

Mediante recursión, muestra todos los elementos primitivos de este array en pantalla.

Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar