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

關於PHP靜態變數

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-09-19 09:16:34
原創
1050 人瀏覽過

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。

相關標籤:
php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
怎麼學好php
來自於 1970-01-01 08:00:00
0
0
0
PHP擴充intl
來自於 1970-01-01 08:00:00
0
0
0
php數據獲取?
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板