Rekurze s parametrem v PHP
Pomocí rekurze postupně vypišme prvky pole. Nechť je pole inicialně předáno parametrům funkce:
<?php
func([1, 2, 3]);
?>
Nyní zkusme bez rekurze pomocí funkce
array_shift
vypišme všechny prvky pole jeden po druhém:
<?php
function func($arr) {
var_dump(array_shift($arr)); // vypíše 1
var_dump($arr); // vypíše [2, 3] - pole se zmenšilo
var_dump(array_shift($arr)); // vypíše 2
var_dump($arr); // vypíše [3] - pole se zmenšilo
var_dump(array_shift($arr)); // vypíše 3
var_dump($arr); // vypíše [] - pole je prázdné
}
func([1, 2, 3]);
?>
Jak vidíte, funkce array_shift
vyjme a vrátí první prvek pole,
přičemž samotné pole se tímto prvkem zmenší.
Nyní použijme rekurzi:
<?php
function func($arr) {
var_dump(array_shift($arr));
var_dump($arr);
if (count($arr) !== 0) {
func($arr);
}
}
func([1, 2, 3]);
?>
Samozřejmě, nejjednodušší je projít prvky pole pomocí cyklu. Uvedené příklady jsou pouze demonstrací práce rekurze na jednoduchých (ne reálných) příkladech. Užitečnější příklady použití rekurze jsou složitější, rozebereme je níže.
Je dáno pole:
<?php
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
?>
Pomocí rekurze vypište prvky tohoto pole na obrazovku.