Рекурсия бо параметр дар PHP
Биёед, бо ёрии рекурсия унсурҳои массивро ба тартиб ба экран чоп кунем. Бигзор массив аз аввал ба параметри функсия гузаронида шавад:
<?php
func([1, 2, 3]);
?>
Биёед ҳоло бе рекурсия бо истифода аз функсияи
array_shift
ҳамаи унсурҳои массивро ба навбат чоп кунем:
<?php
function func($arr) {
var_dump(array_shift($arr)); // 1-ро чоп мекунад
var_dump($arr); // [2, 3]-ро чоп мекунад - массив кам шуд
var_dump(array_shift($arr)); // 2-ро чоп мекунад
var_dump($arr); // [3]-ро чоп мекунад - массив кам шуд
var_dump(array_shift($arr)); // 3-ро чоп мекунад
var_dump($arr); // []-ро чоп мекунад - массив холӣ аст
}
func([1, 2, 3]);
?>
Чунон ки шумо мебинед, функсияи array_shift
якумин унсури массивро бурида бармегардонад,
дар ҳоле ки худи массив аз ин унсур кам мешавад.
Акнун биёед рекурсияро истифода барем:
<?php
function func($arr) {
var_dump(array_shift($arr));
var_dump($arr);
if (count($arr) !== 0) {
func($arr);
}
}
func([1, 2, 3]);
?>
Дар асл, албатта, соддатар ин аст, ки унсурҳои массивро бо ҳалқа такрор кунем. Мисолҳои овардашуда танҳо коркарди рекурсияро дар мисолҳои содда нишон медиҳанд (ҳаётии нест). Мисолҳои бештари фоидаовари истифодаи рекурсия танҳо мураккабтар ҳастанд, мо онҳоро каме дар поён таҳлил мекунем.
Массив дода шудааст:
<?php
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
?>
Бо ёрии рекурсия унсурҳои ин массивро ба экран чоп кунед.