Rekursija su parametru PHP
Pasinaudokime rekursija, kad iš eilės atvaizduotume masyvo elementus. Tegul masyvas iš pradžių perduodamas funkcijos parametrui:
<?php
func([1, 2, 3]);
?>
Kol kas nenaudodami rekursijos, pasinaudokime funkcija
array_shift
kad iš eilės atvaizduotume visus masyvo elementus:
<?php
function func($arr) {
var_dump(array_shift($arr)); // atvaizduos 1
var_dump($arr); // atvaizduos [2, 3] - masyvas sumažėjo
var_dump(array_shift($arr)); // atvaizduos 2
var_dump($arr); // atvaizduos [3] - masyvas sumažėjo
var_dump(array_shift($arr)); // atvaizduos 3
var_dump($arr); // atvaizduos [] - masyvas tuščias
}
func([1, 2, 3]);
?>
Kaip matote, funkcija array_shift
iškerpa ir grąžina pirmąjį masyvo elementą,
o pats masyvas tuo elementu sumažėja.
Dabar panaudokime rekursiją:
<?php
function func($arr) {
var_dump(array_shift($arr));
var_dump($arr);
if (count($arr) !== 0) {
func($arr);
}
}
func([1, 2, 3]);
?>
Tiesą sakant, žinoma, paprasčiausia būtų perkelti masyvo elementus ciklu. Pateikti pavyzdžiai tiesiog demonstruoja rekursijos veikimą paprastais pavyzdžiais (ne iš realaus gyvenimo). Naudingesni rekursijos taikymo pavyzdiai yra tiesiog sudėtingesni, juos išnagrinėsime kiek vėliau.
Duotas masyvas:
<?php
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
?>
Pasinaudojant rekursija, atvaizduokite šio masyvo elementus ekrane.