2015-10-16 2 views
1

J'utilise une variable statique en php. Idéalement, cela devrait afficher 1 à 10.La variable statique dans php ne fonctionne pas comme prévu dans une fonction récursive

Mais ce n'est pas le cas. Pourquoi est-ce vrai?

test(10); 
function test($a) 
{ 
    static $count = 0; 

    $count++; 
    echo $count; 
    if ($count < $a) { 
     echo 'in if ' . $count; 
     test($count); 
    } 

} 
+0

Pouvez-vous poster le code de classe entière, avec un exemple peut-être, peu difficile à diagnostiquer sans plus d'informations. – Dom

+3

Vous voulez probablement 'test ($ a)', pas 'test ($ count)'. – deceze

Répondre

4

Vous avez une mauvaise variable dans votre if. Si vous déboguer vous verriez cette fonction déclenche seulement deux fois au lieu de 10.

changement

if ($count < $a) { 
    echo 'in if ' . $count; 
    test($count); 
} 

à

if ($count < $a) { 
    echo 'in if ' . $count; 
    test($a); 
} 
0

Utilisez cette option si vous souhaitez imprimer 1 à 10

function test($a) 
{ 
    static $count = 0; 

    $count++; 
    echo $count."====".$a; 
    if ($count < $a) { 
     echo 'in if ' . $count; 
     test($a); 
    } 

}