⊗ppPmRcMA 220 of 447 menu

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

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

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

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

Рецимо да желимо да испишемо на екран све примитивне (то jest, низове) елементе нашег низа. У том случају за претраживање таквог низа једноставно нећемо моћи да користимо петље, јер низ има неправилну структуру и непознат ниво угнежђености.

Али за претраживање таквог низа ће веома погодно бити користити рекурзију.

За почетак ћемо направити функцију, у коју као параметар преносимо наш низ, а у функцији правимо петљу за претраживање нашег низа:

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

Петља коју смо направили ће претраживати само елементе главног низа. То jest, прво ће исписати 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]]]]); ?>

А сада ћемо урадити тако да ако наш елемент jeste низ, функција позива саму себе, преносећи као параметар тај низ:

<?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šuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј