Как реализовать рекурсию в PHP?
Всем привет! Подскажите, пожалуйста, как правильно реализовать рекурсию в PHP. Пишу функцию для обхода многомерного массива и подсчёта всех значений, но на выходе получаю либо 0, либо бесконечный цикл.
Вот что я пробовал:
function recursiveSum($arr) {
static $sum = 0;
foreach ($arr as $value) {
if (is_array($value)) {
recursiveSum($value);
} else {
$sum += $value;
}
}
return $sum;
}
$data = [1, [2, 3], [4, [5, 6]]];
echo recursiveSum($data); // ожидаю: 21Проблема в том, что при повторных вызовах функции с разными массивами результат накапливается из-за static-переменной. Я также пробовал передавать сумму по ссылке (&$sum), но тогда функция возвращает неожиданные значения. Ещё вариант с глобальной переменной тоже не подходит — это нарушает принципы чистоты кода.
Ожидаю, что функция должна возвращать сумму всех чисел в массиве любой вложенности, при этом каждый вызов должен быть независимым. Как правильно организовать рекурсию, чтобы результат не зависел от предыдущих вызовов? Может, есть какие-то best practices для рекурсивных функций в PHP? Заранее спасибо за помощь!
Ответов пока нет.
Войдите чтобы оставить ответ