首頁 >後端開發 >php教程 >關於PHP靜態變數

關於PHP靜態變數

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB原創
2016-09-19 09:16:341052瀏覽

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。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn