Recursie cu parametru în PHP
Să folosim recursia pentru a afișa secvențial elementele unui array. Să presupunem că array-ul este transmis inițial ca parametru funcției:
<?php
func([1, 2, 3]);
?>
Să afișăm toate elementele array-ului pe rând,
momentan fără recursie, folosind funcția
array_shift:
<?php
function func($arr) {
var_dump(array_shift($arr)); // va afișa 1
var_dump($arr); // va afișa [2, 3] - array-ul s-a micșorat
var_dump(array_shift($arr)); // va afișa 2
var_dump($arr); // va afișa [3] - array-ul s-a micșorat
var_dump(array_shift($arr)); // va afișa 3
var_dump($arr); // va afișa [] - array-ul este gol
}
func([1, 2, 3]);
?>
După cum vedeți, funcția array_shift
taie și returnează primul element al array-ului,
în timp ce array-ul în sine se micșorează cu acest element.
Să folosim acum recursia:
<?php
function func($arr) {
var_dump(array_shift($arr));
var_dump($arr);
if (count($arr) !== 0) {
func($arr);
}
}
func([1, 2, 3]);
?>
Desigur, de fapt, cea mai simplă metodă este de a parcurge elementele array-ului cu o buclă. Exemplele date sunt doar pentru a demonstra funcționarea recursiei cu exemple simple (nu din viața reală). Exemplele mai utile de aplicare a recursiei sunt pur și simplu mai complexe, le vom analiza mai jos.
Se dă array-ul:
<?php
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
?>
Folosind recursia, afișați elementele acestui array pe ecran.