php中的static靜態變量


今天碰到了一個php的小試題,一直沒有明白為什么第三次循環是static靜態變量沒有起作用呢?想了好久才明白原理。

<?php class MyClass{ function add($b){ static $a=1; $a+=$b; return $a; } } $class = new MyClass(); for($i=0;$i<=5;$i++){ $c=$class->add($i); } echo($c); /*php中的變量作用范圍的另一個重要特性就是靜態變量(static 變量)。 靜態變量僅在局部函數域中存在且只被初始化一次,當程序執行離開此作用域時,其值不會消失,會使用上次執行的結果。*/ 分析: $i = 0; $i<=5;(true) $i++ =1; $c=$class->add(0); $b = 0; static $a=1; $a+=$b = 1+0; $c=1; 第二次循環: $i = 1; $i<=5;(true) $i++ =2; $c=$class->add(1); $b=1; $a = 1; $a+=b = 1+1; $c=2; 第三次循環: $i = 2; $i<=5;(true) $i++ =3; $c=$class->add(2); $b=2; $a = 2; $a+=b = 4; $c=4; 第四次循環: $i = 3; $i<=5;(true) $i++ =4; $c=$class->add(3); $b=3; $a = 4; $a+=b = 4+3; $c=7; 第五次循環: $i = 4; $i<=5;(true) $i++ =5; $c=$class->add(4); $b=4; $a = 7; $a+=b = 7+4; $c=11; 第六次循環: $i = 5; $i<=5;(true) $i++ =6; $c=$class->add(5); $b=5; $a = 11; $a+=b = 11+5; $c=16;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM