Рекурсия с параметър в PHP
Нека, с помощта на рекурсия последователно изведем елементите на масив. Нека масивът първоначално се предава като параметър на функцията:
<?php
func([1, 2, 3]);
?>
Нека първо без рекурсия, използвайки функцията
array_shift
да изведем всички елементи на масива един по един:
<?php
function func($arr) {
var_dump(array_shift($arr)); // ще изведе 1
var_dump($arr); // ще изведе [2, 3] - масивът намаля
var_dump(array_shift($arr)); // ще изведе 2
var_dump($arr); // ще изведе [3] - масивът намаля
var_dump(array_shift($arr)); // ще изведе 3
var_dump($arr); // ще изведе [] - масивът е празен
}
func([1, 2, 3]);
?>
Както виждате, функцията array_shift
изрязва и връща първия елемент от масива,
като самият масив намалява с този елемент.
Нека сега използваме рекурсия:
<?php
function func($arr) {
var_dump(array_shift($arr));
var_dump($arr);
if (count($arr) !== 0) {
func($arr);
}
}
func([1, 2, 3]);
?>
В действителност, разбира се, най-лесно е да обхождате елементите на масива с цикъл. Дадените примери просто демонстрират работата на рекурсията с прости примери (не от реалния живот). По- полезните примери за приложение на рекурсията са просто по-сложни, ще ги разгледаме малко по-късно.
Даден е масив:
<?php
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
?>
С помощта на рекурсия изведете елементите на този масив на екрана.