⊗ppPmRcMA 220 of 447 menu

Ricorsione e strutture multidimensionali in PHP

Dato un array multidimensionale di livello arbitrario di annidamento, ad esempio, come questo:

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

Come puoi vedere, questo array ha una struttura complessa, e si presuppone che questa struttura possa essere arbitraria e i livelli di annidamento possono essere profondi a piacere.

Supponiamo di voler visualizzare a schermo tutti gli elementi primitivi (cioè non array) del nostro array. In questo caso, per iterare su un tale array non potremo semplicemente utilizzare i cicli, poiché l'array ha una struttura irregolare e un livello di annidamento sconosciuto.

Tuttavia, per iterare su un tale array sarà molto comodo utilizzare la ricorsione.

Per iniziare, creiamo una funzione, a cui passeremo il nostro array come parametro, e all'interno della funzione creiamo un ciclo per iterare il nostro array:

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

Il ciclo che abbiamo creato itererà solo sugli elementi dell'array principale. Cioè all'inizio stamperà 1, poi [2, 7, 8], e poi [3, 4, [5, [6, 7]].

Ora, all'interno del ciclo, separiamo gli elementi primitivi dagli elementi array:

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

E ora facciamo in modo che se il nostro elemento è un array, la funzione richiami sé stessa, passando come parametro questo array:

<?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]]]]); ?>

Dato un array multidimensionale di livello arbitrario di annidamento, ad esempio, come questo:

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

Utilizzando la ricorsione, visualizza tutti gli elementi primitivi di questo array a schermo.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta