Avatar ·

Cómo implementar recursión en PHP?

¡Hola a todos! Por favor, indíquenme cómo implementar correctamente la recursión en PHP. Estoy escribiendo una función para recorrer un array multidimensional y sumar todos los valores, pero al final obtengo 0 o un bucle infinito.

Esto es lo que he probado:

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); // espero: 21

El problema es que al llamar la función varias veces con diferentes arrays, el resultado se acumula debido a la variable static. También probé pasar la suma por referencia (&$sum), pero entonces la función devuelve valores inesperados. Otra opción con una variable global tampoco es adecuada: viola los principios de código limpio.

Espero que la función devuelva la suma de todos los números en un array de cualquier anidamiento, y que cada llamada