⊗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šuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць