Heim > Backend-Entwicklung > PHP-Tutorial > 关于上面这个递归,为什么最后的$a值为0?不是1吗

关于上面这个递归,为什么最后的$a值为0?不是1吗

WBOY
Freigeben: 2016-06-13 13:23:14
Original
1127 Leute haben es durchsucht

关于下面这个递归,为什么最后的$a值为0?不是1吗?

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
<?php echo Test ();
function Test() {
    static $a = 0;//这里是第4行
    echo $a . '<br>';
    $a ++;
    if ($a 

Nach dem Login kopieren

关于上面这个递归,为什么最后的$a值为0?不是1吗?
我用Debugger调试了下,发现运行顺序为:
顺序:4―5―6―7―8―4―5―6―7―10―11―10―11
$a值:0―0―1―1―1―1―1―2―2―1 ―1 ―0 ―0
最后运行输出的结果为
0
1
0
就是想问下,为什么10行和11行会运行两次?

谢谢了!

------解决方案--------------------
这样的执行循序
你说该之行几次
4 static $a = 0;//这里是第4行
5 echo $a . '
';
6 $a ++;
7 if ($a 8 Test ();
4 static $a = 0;//这里是第4行
5 echo $a . '
';
6 $a ++;
7 if ($a 9 }
10 $a --;
11 return $a;
9 }
10 $a --;
11 return $a;

------解决方案--------------------
PHP code

function Test() {
    static $a = 0;//这里是第4行 ------------------------(1)
    echo $a . '<br>';
    $a ++;
/*注意这里非注释代码的上下一行 ,return值必定是(1)处的定义*/
/*如果你想得到预期的返回结果1,
    if ($a 
                 
              
              
        
            
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage