⊗ppPmRcMA 220 of 447 menu

Rekurzia a multidimenzionálne štruktúry v PHP

Dané je pole ľubovoľnej úrovne vnorenia, napríklad takéto:

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

Ako vidíte, toto pole má zložitú štruktúru, pričom sa predpokladá, že táto štruktúra môže byť ľubovoľná a úrovne vnorenia môžu byť ľubovoľne hlboké.

Povedzme, že chceme vypísať na obrazovku všetky primitívne (teda nie polia) prvky nášho poľa. V tomto prípade na prechádzanie takéhoto poľa jednoducho nemôžeme použiť cykly, pretože pole má nepravidelnú štruktúru a neznámu úroveň vnorenia.

Na prechádzanie takéhoto poľa je však veľmi vhodné použiť rekurziu.

Na začiatok vytvoríme funkciu, do ktorej ako parameter pridáme naše pole a vo funkcii urobíme cyklus na prechádzanie nášho poľa:

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

Cyklus, ktorý sme vytvorili, bude prechádzať iba prvky hlavného poľa. To znamená, že najprv vypíše 1, potom [2, 7, 8], a potom [3, 4, [5, [6, 7]].

Poďme teraz v cykle rozdeľovať primitívne prvky a prvky, ktoré sú poliami:

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

A teraz urobíme to, že ak je náš prvok pole, funkcia zavolá samu seba, pričom ako parameter predá toto pole:

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

Dané je multidimenzionálne pole ľubovoľnej úrovne vnorenia, napríklad takéto:

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

Pomocou rekurzie vypíšte všetky primitívne prvky tohto poľa na obrazovku.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť