⊗ppPmRcMA 220 of 447 menu

Recursie en multidimensionale structuren in PHP

Gegeven is een multidimensionale array van een willekeurig niveau van genestheid, bijvoorbeeld zoals deze:

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

Zoals je kunt zien, heeft deze array een complexe structuur, en er wordt van uitgegaan dat deze structuur willekeurig kan zijn en de niveaus van genestheid willekeurig diep kunnen zijn.

Stel dat we alle primitieve (dat wil zeggen, geen arrays) elementen van onze array op het scherm willen weergeven. In dit geval kunnen we eenvoudigweg geen loops gebruiken om deze array te doorlopen, omdat de array een onregelmatige structuur heeft en een onbekend niveau van genestheid.

Maar voor het doorlopen van zo'n array is het erg handig om recursie te gebruiken.

Laten we eerst een functie maken, waarin we als parameter onze array doorgeven, en in de functie maken we een loop om onze array te doorlopen:

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

De door ons gemaakte loop zal alleen de elementen van de hoofdarray doorlopen. Dat wil zeggen, eerst zal het 1 weergeven, dan [2, 7, 8], en dan [3, 4, [5, [6, 7]].

Laten we nu in de loop primitieve elementen en array-elementen onderscheiden:

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

En laten we het nu zo maken dat als ons element een array is, de functie zichzelf aanroept, en deze array als parameter doorgeeft:

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

Gegeven is een multidimensionale array van een willekeurig niveau van genestheid, bijvoorbeeld zoals deze:

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

Gebruik recursie om alle primitieve elementen van deze array op het scherm weer te geven.

Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren