⊗ppPmRcMA 220 of 447 menu

Rekursioon ja mitmemõõtmelised struktuurid PHP-s

Antud on mitmemõõtmeline massiiiv suvalise pesastustasemega, näiteks selline:

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

Nagu te näete, on sellel massiivil keeruline struktuur, kusjuures eeldatakse, et see struktuur võib olla suvaline ja pesastustasemed võivad olla ükskõik kui sügavad.

Oletame, et soovime kõik primitiivsed (st mitte massiivid) meie massiivi elemendid ekraanile kuvada. Sellisel juhul ei saaks me sellise massiivi läbimiseks kasutada lihtsalt tsükleid, kuna massiivil on ebaregulaarne struktuur ja teadmata pesastustase.

Kuid sellise massiivi läbimiseks on väga mugav kasutada rekursiooni.

Alustuseks loome funktsiooni, kuhu parameetrina edastame oma massiivi, ja funktsiooni sees teeme tsükli meie massiivi läbimiseks:

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

Meie poolt loodud tsükkel läbib ainult põhimassiivi elemendid. See tähendab, et alguses kuvab see 1, siis [2, 7, 8], ja seejärel [3, 4, [5, [6, 7]].

Teeme nüüd tsüklis vahet primitiivsetel elementidel ja massiividel elementidel:

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

Ja nüüd teeme nii, et kui meie element on massiiv, siis funktsioon kutsuks välja iseennast, edastades parameetrina selle massiivi:

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

Antud on mitmemõõtmeline massiiv suvalise tasemega pesastust, näiteks selline:

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

Kasutades rekursiooni, kuvage kõik selle massiivi primitiivsed elemendid ekraanile.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu