⊗ppPmRcMA 220 of 447 menu

Rekursija un daudzdimensiju struktūras PHP

Dots masīvs ir daudzdimensiju ar patvaļīgu iedziļinājuma līmeni, piemēram, šāds:

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

Kā jūs redzat, šim masīvam ir sarežģīta struktūra, un tiek pieņemts, ka šī struktūra var būt patvaļīga, un iedziļinājuma līmeņi var būt tik dziļi, cik vēlas.

Pieņemsim, ka mēs vēlamies izvadīt uz ekrānu visus primitīvos (tas ir, ne masīvus) mūsu masīva elementus. Šajā gadījumā, lai pārlīstu šādu masīvu, mums vienkārši neizdosies izmantot ciklus, jo masīvam ir neregulāra struktūra un nezināms iedziļinājuma līmenis.

Taču, lai pārlīstu šādu masīvu, ļoti ērti varēs izmantot rekursiju.

Sākumā izveidosim funkciju, kurā parametrā padodam mūsu masīvu, un funkcijā izveidosim ciklu mūsu masīva pārlasei:

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

Mūsu izveidotais cikls pārlās tikai pamata masīva elementus. Tas ir, sākumā tas izvadīs 1, tad [2, 7, 8], un pēc tam [3, 4, [5, [6, 7]].

Tagad cilpā sāksim atšķirt primitīvos elementus un masīvu elementus:

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

Un tagad panāksim, ka, ja mūsu elements ir masīvs, funkcija izsauktu pati sevi, padodot parametrā šo masīvu:

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

Dots daudzdimensiju masīvs ar patvaļīgu iedziļinājuma līmeni, piemēram, šāds:

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

Ar rekursijas palīdzību izvadiet visus primitīvos šī masīva elementus uz ekrāna.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt