Avatar ·

如何在 PHP 中实现递归?

大家好!请问如何在 PHP 中正确实现递归。我正在编写一个函数来遍历多维数组并计算所有值的总和,但结果要么是 0,要么是无限循环。

以下是我尝试过的代码:

function recursiveSum($arr) {\n    static $sum = 0;\n    foreach ($arr as $value) {\n        if (is_array($value)) {\n            recursiveSum($value);\n        } else {\n            $sum += $value;\n        }\n    }\n    return $sum;\n}\n\n$data = [1, [2, 3], [4, [5, 6]]];\necho recursiveSum($data); // 期望:21

问题在于,当用不同的数组多次调用函数时,由于使用了 static 变量,结果会累积。我也尝试过通过引用传递 sum(&$sum),但函数返回了意外的值。使用全局变量的方案也不合适——这违反了代码的纯洁性原则。

我期望函数能够返回任意嵌套数组中所有数字的总和,并且每次调用时都独立计算。