⊗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 файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау