⊗ppPmRcMA 220 of 447 menu

Rekursiya və çoxölçülü strukturlar PHP-də

Ixtiyari daxilolma səviyyəsinə malik çoxölçülü massiv verilmişdir, məsələn, belə:

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

Gördüyünüz kimi, bu massivin mürəkkəb strukturu var və güman edilir ki, bu struktur ixtiyari ola bilər və daxilolma səviyyələri istənilən qədər dərin ola bilər.

Tutaq ki, biz massivin bütün primitiv (yəni, massiv olmayan) elementlərini ekrana çıxarmaq istəyirik. Bu halda, belə bir massivi iterasiya etmək üçün sadəcə dövrələrdən istifadə edə bilməyəcəyik, çünki massivin qeyri-müntəzəm strukturu var və naməlum daxilolma səviyyəsi var.

Lakin belə bir massivi iterasiya etmək üçün rekursiyadan istifadə etmək çox əlverişli olardı.

Əvvəlcə bir funksiya edək, parametr kimi bizim massivimizi ötürəcəyik, və funksiyada massivimizi iterasiya etmək üçün bir dövrə edək:

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

Etmiş olduğumuz dövrə yalnız əsas massivin elementlərini iterasiya edəcək. Yəni əvvəlcə o 1 çıxardacaq, sonra [2, 7, 8], və sonra [3, 4, [5, [6, 7]].

Gəlin indi dövrədə primitiv elementləri və massiv elementlərini ayıraq:

<?php function func($arr) { foreach ($arr as $elem) { if (is_array($elem)) { // element - massiv } else { // element - primitiv echo $elem; } } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]); ?>

Və indi elə edək ki, əgər bizim elementimiz bir massivdirsə, funksiya özünü çağırsın, parametr kimi bu massivi ötürsün:

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

Ixtiyari daxilolma səviyyəsinə malik çoxölçülü massiv verilmişdir, məsələn, belə:

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

Rekursiyadan istifadə edərək, bu massivin bütün primitiv elementlərini ekrana çıxarın.

Azərbaycan
AfrikaansБългарскиবাংলাБеларускаяČ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
Biz saytin işi, analitika və fərdiləşdirmə üçün cookie istifadə edirik. Məlumatların emalı Məxfilik Siyasəti əsasında həyata keçirilir.
hamısını qəbul et konfiqurasiya et rədd et