Rekursio parametrilla PHP:ssä
Esittelemme rekursion avulla peräkkäin taulukon elementit. Olkoon taulukko aluksi välitettynä funktion parametrina:
<?php
func([1, 2, 3]);
?>
Tehdään tämä ilman rekursiota käyttämällä funktiota
array_shift
ja tulostetaan kaikki taulukon elementit vuorotellen:
<?php
function func($arr) {
var_dump(array_shift($arr)); // tulostaa 1
var_dump($arr); // tulostaa [2, 3] - taulukko pieneni
var_dump(array_shift($arr)); // tulostaa 2
var_dump($arr); // tulostaa [3] - taulukko pieneni
var_dump(array_shift($arr)); // tulostaa 3
var_dump($arr); // tulostaa [] - taulukko on tyhjä
}
func([1, 2, 3]);
?>
Kuten näette, funktio array_shift
leikkaa ja palauttaa taulukon ensimmäisen elementin,
samalla itse taulukko pienenee kyseisellä elementillä.
Käytetään nyt rekursiota:
<?php
function func($arr) {
var_dump(array_shift($arr));
var_dump($arr);
if (count($arr) !== 0) {
func($arr);
}
}
func([1, 2, 3]);
?>
Todellisuudessa tietysti on helpointa käydä läpi taulukon elementit silmukalla. Esitetyt esimerkit ovat tällä hetkellä vain yksinkertaisten (ei arkielämän) esimerkkien rekursion toiminnan demonstrointia. Hyödyllisemmät esimerkit rekursion soveltamisesta ovat vaan monimutkaisempia, käymme ne läpi hieman myöhemmin.
Annettu taulukko:
<?php
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
?>
Käytä rekursiota tulostaaksesi tämän taulukon elementit näytölle.