⊗ppPmRcMA 220 of 447 menu

Рекурзија и мултидимензионални структури во PHP

Дадена е мултидимензионална низа со произволно ниво на вгнезденост, на пример, вака:

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

Како што можете да видите, оваа низа има сложена структура, при што се претпоставува дека оваа структура може да биде произволна и нивоата на вгнезденост можат да бидат произволно длабоки.

Да речеме дека сакаме да ги испечатиме сите примитивни (односно не низи) елементи на нашата низа. Во овој случај, за пребарување на таква низа едноставно нема да можеме да користиме јамки, бидејќи низата има неправилна структура и непознато ниво на вгнезденост.

Но, за пребарување на таква низа многу погодно ќе биде да се користи рекурзија.

За почеток, да направиме функција, во која како параметар ќе ја пренесеме нашата низа, а во функцијата ќе направиме јамка за пребарување на нашата низа:

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

Јамката што ја направивме ќе ги пребарува само елементите на главната низа. Односно, прво ќе испечати 1, потоа [2, 7, 8], а потоа [3, 4, [5, [6, 7]].

Сега, да ги разделуваме во јамката примитивните елементи и елементите-низи:

<?php function func($arr) { foreach ($arr as $elem) { if (is_array($elem)) { // елементот е низа } else { // елементот е примитивен echo $elem; } } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]); ?>

И сега да направиме така што ако нашиот елемент е низа, функцијата да се повика сама себе, пренесувајќи како параметар таа низа:

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

Дадена е мултидимензионална низа со произволно ниво на вгнезденост, на пример, вака:

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

Со помош на рекурзија испечатете ги сите примитивни елементи на оваа низа на екран.

Македонски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј