⊗ppPmRcMA 220 of 447 menu

Rekursion och multidimensionella strukturer i PHP

Det finns en multidimensionell array av godtycklig nivå av kapsling, till exempel denna:

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

Som du kan se har denna array en komplex struktur, och det antas att denna struktur kan vara godtycklig och nivåerna av kapsling kan vara hur djupa som helst.

Låt oss säga att vi vill skriva ut alla primitiva (dvs inte arrayer) element i vår array. I det här fallet kommer vi helt enkelt inte att kunna använda loopar för att iterera över en sådan array, eftersom arrayen har en oregelbunden struktur och en okänd kapsningsnivå.

Däremot kommer rekursion att vara mycket användbart för att iterera över en sådan array.

Låt oss först skapa en funktion, där vi som parameter skickar in vår array, och i funktionen skapar vi en loop för att iterera över vår array:

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

Loopen vi skapat kommer endast att iterera över elementen i huvudarrayen. Det vill säga, först kommer den att skriva ut 1, sedan [2, 7, 8], och sedan [3, 4, [5, [6, 7]].

Låt oss nu i loopen särskilja primitivelement och arrayelement:

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

Och låt oss nu göra så att om vårt element är en array, anropar funktionen sig själv, och skickar denna array som en parameter:

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

Det finns en multidimensionell array av godtycklig nivå av kapsling, till exempel denna:

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

Med hjälp av rekursion, skriv ut alla primitiva element i denna array på skärmen.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa