php中普通變量與static變量的區別

衆所周知:php是一中弱類型語言,因此,在定義變量的時候咱們是不須要明確指明相應的數據類型的! 可是,有這個一個關鍵字 static 可讓一個變量的行爲變的很古怪(對不理解他的人來講)!php

 

下面,咱們看一個普通的例子函數

function testfunc(){
    $var = 3;
    echo ++$var;
    echo '<br>';
}

testfunc();
testfunc();
testfunc();

 

此程序輸出:三個4 。例子到這裏仍是很容易理解的!由於每次調用了相同的函數 var 變量都會進行一次初始化!測試

步入正題:再舉個栗子spa

function testfunc1(){
    static $var = 3;
    echo ++$var;
    echo '<br>';
}

testfunc1();
testfunc1();
testfunc1();

 

乍一看和上一個程序沒有什麼區別(實際上已經多了一個 static 修飾)code

可是此次的結果和上面的是徹底不一樣的 io

輸出結果以下function

4
5
6

再來看一個意外的例子test

function testfunc1(){
    static $var = 3+4;
    echo ++$var;
    echo '<br>';
}

testfunc1();
testfunc1();
testfunc1();

 

這裏的輸出結果以下:變量

Parse error: syntax error, unexpected '+', expecting ',' or ';' in E:\phptest\static-variable.php on line 7

 

通過上面的測試,想必你已經對 static 修飾符有必定的見解了!數據類型

下面:我來總結一下static 修飾的變量的一些特性

  1. static 關鍵字修飾的變量只能初始化一次 

  2. static 關鍵字修飾的變量不會隨着函數的退出而註銷 

  3. static 關鍵字修飾的變量不能被初始化爲 表達式  (第三個例子證實之)

通過上面的總結和說明,咱們能夠大體得出這樣的結論:static變量適合使用場合是:屢次調用一個函數且要求在調用之間保留某些變量的值的狀況。

相關文章
相關標籤/搜索