PHP的static靜態變數不是只在記憶體存一份嗎?今天試了一下下面的程式碼有點疑問
<code>function test(){ static $sum = 0; static $sum = 20; for ($i=0; $i < 100; $i++) { $sum = $sum + $i; } echo $sum; } echo "<pre class="brush:php;toolbar:false">"; test();//4970 echo "<br />"; test();//9920 echo "<br />"; test();//14870 </code>
既然在記憶體中只是一份,再次呼叫類似直接引用,那麼第一次為什麼 $num 被賦值成了20?
第一次運行的結果不應該是 4950 才對嘛
PHP的static靜態變數不是只在記憶體存一份嗎?今天試了一下下面的程式碼有點疑問
<code>function test(){ static $sum = 0; static $sum = 20; for ($i=0; $i < 100; $i++) { $sum = $sum + $i; } echo $sum; } echo "<pre class="brush:php;toolbar:false">"; test();//4970 echo "<br />"; test();//9920 echo "<br />"; test();//14870 </code>
既然在記憶體中只是一份,再次呼叫類似直接引用,那麼第一次為什麼 $num 被賦值成了20?
第一次運行的結果不應該是 4950 才對嘛
$i =1;$i…
//結果:4950;
可以理解為 值20那一行,把上面值為0的一行覆蓋了,因為變數名稱一樣,所以初始化的時候就是20。