⊗ppPmRcMA 220 of 447 menu

Recursie și structuri multidimensionale în PHP

Se dă un array multidimensional cu un nivel arbitrar de imbricare, de exemplu, acesta:

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

După cum puteți vedea, acest array are o structură complexă, iar se presupune că această structură poate fi arbitrară și nivelurile de imbricare pot fi oricât de adânci.

Să presupunem că vrem să afișăm toate elementele primitive (adică, care nu sunt array-uri) ale array-ului nostru. În acest caz, pentru a parcurge un astfel de array nu vom putea folosi bucle, deoarece array-ul are o structură neregulată și un nivel de imbricare necunoscut.

În schimb, pentru a parcurge un astfel de array este foarte convenabil să folosim recursia.

Pentru început, să creăm o funcție care primește ca parametru array-ul nostru, iar în funcție să facem o buclă pentru a parcurge array-ul:

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

Bucla pe care am făcut-o va parcurge doar elementele array-ului principal. Adică la început va afișa 1, apoi [2, 7, 8], și apoi [3, 4, [5, [6, 7]].

Acum, să separăm în buclă elementele primitive de elementele care sunt array-uri:

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

Și acum, să facem astfel încât, dacă elementul nostru este un array, funcția să se autoapeleze, transmitând ca parametru acel 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]]]]); ?>

Se dă un array multidimensional cu un nivel arbitrar de imbricare, de exemplu, acesta:

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

Folosind recursia, afișați toate elementele primitive ale acestui array pe ecran.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge