Avatar ·

Comment implémenter la récursion en PHP ?

Bonjour à tous ! Dites-moi, s'il vous plaît, comment implémenter correctement la récursion en PHP. J'écris une fonction pour parcourir un tableau multidimensionnel et compter toutes les valeurs, mais j'obtiens soit 0, soit une boucle infinie.

Voici ce que j'ai essayé :

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

Le problème est que lors d'appels répétés de la fonction avec différents tableaux, le résultat s'accumule à cause de la variable static. J'ai aussi essayé de passer la somme par référence (&$sum), mais alors la fonction retourne des valeurs inattendues. Une autre option avec une variable globale ne convient pas non plus — cela viole les principes de propreté du code.

Je m'attends à ce que la fonction retourne la somme de tous les nombres dans un tableau de n'importe quelle profondeur, et ce à chaque appel.