⊗ppPmRcMA 220 of 447 menu

Rekurzija i višedimenzionalne strukture u PHP-u

Dat je višedimenzionalni niz proizvoljnog nivoa ugnježdenosti, na primer, ovakav:

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

Kao što vidite, ovaj niz ima složenu strukturu, i podrazumeva se da ova struktura može biti proizvoljna i nivoi ugnježdenosti mogu biti proizvoljno duboki.

Recimo da želimo da prikažemo sve primitivne (to jest, one koji nisu nizovi) elemente našeg niza. U ovom slučaju za prolazak kroz takav niz jednostavno ne možemo koristiti petlje, jer niz ima nepravilnu strukturu i nepoznati nivo ugnježdenosti.

Međutim, za prolazak kroz takav niz veoma zgodno će biti koristiti rekurziju.

Za početak, napravićemo funkciju u koju ćemo kao parametar proslediti naš niz, a u funkciji ćemo napraviti petlju za prolazak kroz naš niz:

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

Petlja koju smo napravili će prolaziti samo kroz elemente glavnog niza. To jest, prvo će ispisati 1, zatim [2, 7, 8], a potom [3, 4, [5, [6, 7]].

Hajde sada da u petlji razdvajamo elemente-primitive i elemente-nizove:

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

A sada hajde da uradimo tako da, ako naš element jeste niz, funkcija poziva samu sebe, prosleđujući kao parametar taj niz:

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

Dat je višedimenzionalni niz proizvoljnog nivoa ugnježdenosti, na primer, ovakav:

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

Koristeći rekurziju, prikažite sve primitivne elemente ovog niza na ekranu.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij