2015-10-16 79 views
1

我在php中使用静态变量。理想情况下,这应显示1到10.php中的静态变量在递归函数中无法正常工作

但事实并非如此。为什么这样?

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

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

} 
+0

您可以发布整个班级代码吗?例如,如果没有更多信息,您可能难以诊断。 – Dom

+3

你可能想'test($ a)',而不是'test($ count)'。 – deceze

回答

4

你在if中有错误的变量。如果您调试它,你会看到该功能触发的只有两次,而不是10

变化

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

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

使用这个,如果你想打印1至10

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

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

}