⊗ppPmRcMA 220 of 447 menu

Ռեկուրսիա և բազմաչափ կառուցվածքներ PHP-ում

Տրված է կամայական խորության բազմաչափ զանգված, օրինակ, այսպիսին.

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

Ինչպես տեսնում եք, այս զանգվածն ունի բարդ կառուցվածք, ընդ որում, ենթադրվում է, որ այս կառուցվածքը կարող է լինել կամայական, և ներդրումային մակարդակները կարող են լինել ցանկացած խորության:

Ենթադրենք, մենք ցանկանում ենք էկրանին ցուցադրել մեր զանգվածի բոլոր պարզ (այսինքն՝ ոչ զանգված) տարրերը: Այս դեպքում այդպիսի զանգվածը կրկնելու համար մենք պարզապես չենք կարող օգտագործել օղակներ, քանի որ զանգվածն ունի անկանոն կառուցվածք և անհայտ ներդրումային մակարդակ:

Սակայն այդպիսի զանգվածը կրկնելու համար շատ հարմար կլինի օգտագործել ռեկուրսիա:

Սկզբում եկեք ստեղծենք ֆունկցիա, որին որպես պարամետր կփոխանցենք մեր զանգվածը, և ֆունկցիայի ներսում կստեղծենք օղակ մեր զանգվածը կրկնելու համար.

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

Մեր ստեղծած օղակը կկրկնի միայն հիմնական զանգվածի տարրերը: Այսինքն՝ սկզբում այն կցուցադրի 1, ապա [2, 7, 8], և ապա [3, 4, [5, [6, 7]]:

Այժմ եկեք օղակում տարանջատենք պարզ տարրերը և զանգված-տարրերը.

<?php function func($arr) { foreach ($arr as $elem) { if (is_array($elem)) { // տարրը զանգված է } else { // տարրը պարզ է echo $elem; } } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]); ?>

Եվ հիմա եկեք անենք, որ եթե մեր տարրը զանգված է, ֆունկցիան կանչի ինքն իրեն, փոխանցելով որպես պարամետր այդ զանգվածը.

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

Տրված է կամայական խորության բազմաչափ զանգված, օրինակ, այսպիսին.

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

Օգտագործելով ռեկուրսիա, ցուցադրեք այս զանգվածի բոլոր պարզ տարրերը էկրանին:

Հայերեն
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել