⊗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çeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш