Рекурсия ва структураҳои чандченака дар 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]]];
?>
Бо ёрии рекурсия ҳамаи элементҳои примитивии ин массиверо ба экран чоп кунед.