Rekursion med parameter i PHP
La oss, ved hjelp av rekursion, sekvensielt skrive ut elementene i en array. La arrayen initialt være sendt som en parameter til funksjonen:
<?php
func([1, 2, 3]);
?>
La oss først, uten rekursion, ved å bruke funksjonen
array_shift
skrive ut alle elementene i arrayen en etter en:
<?php
function func($arr) {
var_dump(array_shift($arr)); // skriver ut 1
var_dump($arr); // skriver ut [2, 3] - arrayen er redusert
var_dump(array_shift($arr)); // skriver ut 2
var_dump($arr); // skriver ut [3] - arrayen er redusert
var_dump(array_shift($arr)); // skriver ut 3
var_dump($arr); // skriver ut [] - arrayen er tom
}
func([1, 2, 3]);
?>
Som du ser, funksjonen array_shift
kutter ut og returnerer det første elementet i arrayen,
samtidig som selve arrayen reduseres med dette elementet.
La oss nå bruke rekursion:
<?php
function func($arr) {
var_dump(array_shift($arr));
var_dump($arr);
if (count($arr) !== 0) {
func($arr);
}
}
func([1, 2, 3]);
?>
Egentlig er det selvfølgelig enklest å iterere over elementene i arrayen med en loop. De viste eksemplene demonstrerer ganske enkelt arbeidet med rekursion på enkle eksempler (ikke fra virkelige situasjoner). Mer nyttige eksempler på anvendelse av rekursion er rett og slett mer komplekse, vi skal se på dem litt nedenfor.
Gitt følgende array:
<?php
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
?>
Bruk rekursion til å skrive ut elementene i denne arrayen på skjermen.