Rekursioon parameetriga PHP-s
Võtame rekursiooni abil järjestikku massiivi elemendid välja. Olgu massiiv algselt edastatud funktsiooni parameetrina:
<?php
func([1, 2, 3]);
?>
Teeme seda esialgu ilma rekursioonita, kasutades funktsiooni
array_shift
et väljastada kõik massiivi elemendid järjekorras:
<?php
function func($arr) {
var_dump(array_shift($arr)); // väljastab 1
var_dump($arr); // väljastab [2, 3] - massiiv vähenes
var_dump(array_shift($arr)); // väljastab 2
var_dump($arr); // väljastab [3] - massiiv vähenes
var_dump(array_shift($arr)); // väljastab 3
var_dump($arr); // väljastab [] - massiiv on tühi
}
func([1, 2, 3]);
?>
Nagu näete, funktsioon array_shift
lõikab välja ja tagastab massiivi esimese elemendi,
samal ajal massiiv ise väheneb selle elemendi võrra.
Kasutame nüüd rekursiooni:
<?php
function func($arr) {
var_dump(array_shift($arr));
var_dump($arr);
if (count($arr) !== 0) {
func($arr);
}
}
func([1, 2, 3]);
?>
Tegelikult on muidugi lihtsam massiivi elemente läbida tsükliga. Toodud näited lihtsalt demonstreerivad rekursiooni tööd lihtsate näidete peal (mitte elulistest). Kasulikumad rekursiooni rakendusnäited on lihtsalt keerulisemad, me analüüsime neid veidi allpool.
Antud massiiv:
<?php
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
?>
Kasutades rekursiooni, väljasta selle massiivi elemendid ekraanile.