⊗ppPmRcMA 220 of 447 menu

Rekursie en multidimensionele strukture in PHP

Gegee 'n multidimensionele skikking van arbitrêre vlak van innesteling, byvoorbeeld so een:

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

Soos jy kan sien, het hierdie skikking 'n komplekse struktuur, en dit word veronderstel dat hierdie struktuur arbitrêr kan wees en die vlakke van innesteling kan so diep wees as wat dit ook al is.

Kom ons sê ons wil alle primitiewe (d.w.s. nie skikkings nie) elemente van ons skikking op die skerm vertoon. In hierdie geval sal ons nie net lusse kan gebruik om deur so 'n skikking te iter nie, aangesien die skikking 'n onreëlmatige struktuur het en 'n onbekende vlak van innesteling.

Maar om so 'n skikking deur te gaan, sal rekursie baie gerieflik wees.

Laat ons eers 'n funksie maak wat ons skikking as parameter neem, en binne die funksie maak ons 'n lus om deur ons skikking te iter:

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

Die lus wat ons gemaak het, sal slegs die elemente van die hoofskikking deurloop. Dit wil sê, eers sal dit 1 vertoon, dan [2, 7, 8], en dan [3, 4, [5, [6, 7]].

Laat ons nou in die lus onderskei tussen primitiewe elemente en skikking-elemente:

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

En nou laat ons dit so maak dat as ons element 'n skikking is, die funksie haarself aanroep en hierdie skikking as parameter deurgee:

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

Gegee 'n multidimensionele skikking van arbitrêre vlak van innesteling, byvoorbeeld so een:

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

Gebruik rekursie om alle primitiewe elemente van hierdie skikking op die skerm te vertoon.

Afrikaans
Azə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
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp