⊗ppPmRcMA 220 of 447 menu

Rekurencja i struktury wielowymiarowe w PHP

Dana jest tablica wielowymiarowa o dowolnym poziomie zagnieżdżenia, na przykład taka:

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

Jak widzisz, ta tablica ma złożoną strukturę, przy czym zakłada się, że ta struktura może być dowolna, a poziomy zagnieżdżenia mogą być dowolnie głębokie.

Załóżmy, że chcemy wyświetlić wszystkie prymitywne (czyli nie tablice) elementy naszej tablicy. W tym przypadku do iteracji po takiej tablicy po prostu nie uda nam się użyć pętli, ponieważ tablica ma nieregularną strukturę i nieznany poziom zagnieżdżenia.

Za to do iteracji po takiej tablicy bardzo wygodnie będzie użyć rekurencji.

Na początek zróbmy funkcję, do której parametrem będziemy przekazywać naszą tablicę, a w funkcji zróbmy pętlę do iteracji po naszej tablicy:

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

Stworzona przez nas pętla będzie iterować tylko po elementach głównej tablicy. Czyli na początku wypisze 1, potem [2, 7, 8], a potem [3, 4, [5, [6, 7]].

Zróbmy teraz tak, aby w pętli rozróżniać elementy-prymitywy i elementy-tablice:

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

A teraz zróbmy tak, aby jeśli nasz element to tablica, funkcja wywoływała samą siebie, przekazując parametrem tę tablicę:

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

Dana jest wielowymiarowa tablica o dowolnym poziomie zagnieżdżenia, na przykład taka:

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

Za pomocą rekurencji wypisz wszystkie prymitywne elementy tej tablicy na ekran.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć