⊗ppPmRcMA 220 of 447 menu

Rekurzió és többdimenziós struktúrák PHP-ben

Adott egy tetszőleges beágyazási szintű többdimenziós tömb, például mint ez:

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

Amint látható, ennek a tömbnek összetett a szerkezete, és feltételezzük, hogy ez a szerkezet tetszőleges lehet, és a beágyazási szintek akármilyen mélyek lehetnek.

Tegyük fel, hogy ki szeretnénk írni az összes primitív (vagyis nem tömb) elemét a tömbünknek. Ebben az esetben egy ilyen tömb bejárásához egyszerűen nem használhatunk ciklusokat, mivel a tömb szabálytalan szerkezetű, és ismeretlen a beágyazási szintje.

Viszont egy ilyen tömb bejárásához nagyon kényelmes lesz a rekurzió használata.

Kezdetben készítsünk egy függvényt, amelynek paraméterként átadjuk a tömbünket, és a függvényben készítsünk egy ciklust a tömb bejárásához:

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

Az általunk készített ciklus csak a fő tömb elemeit fogja bejárni. Vagyis először kiírja a 1-et, majd a [2, 7, 8]-ot, és végül a [3, 4, [5, [6, 7]]-ot.

Most válassuk szét a ciklusban a primitív elemeket és a tömb elemeket:

<?php function func($arr) { foreach ($arr as $elem) { if (is_array($elem)) { // elem - tömb } else { // elem - primitív echo $elem; } } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]); ?>

És most tegyük úgy, hogy ha az elemünk tömb, akkor a függvény magát hívja meg, átadva paraméterként ezt a tömböt:

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

Adott egy tetszőleges beágyazási szintű többdimenziós tömb, például mint ez:

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

Rekurzió segítségével írja ki az összes primitív elemét ennek a tömbnek a képernyőre.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás