變量不僅有其特定的作用范圍,還有其存活的周期--生命周期。變量的生命周期指的是變量可被使用的一個時間段,在這個時間段內變量是有效的,一旦超出這個時間段變量就會失效,我們就不能夠再訪問到該變量的值了。
PHP對變量的生命周期有如下規定。
局部變量的生命周期為其所在函數被調用的整個過程。當局部變量所在的函數結束時,局部變量的生命周期也隨之結束。
全局變量的生命周期為其所在的".php"腳本文件被調用的整個過程。當全局變量所在的腳本文件結束調用時,則全局變量的生命周期結束。
有的時候某個自定義函數結束后,我們希望該函數內的變量仍然存在,這時就需要將這個變量聲明為靜態變量。將一個變量聲明為靜態變量的方法為,在變量前面加"static"關鍵字。
應用靜態變量的示例代碼如下。
<html> <head> <title>靜態變量的應用</title> </head> <body> <?php function test(){ static $a = 0; //定義一個靜態變量a並賦初始值為0 echo $a."<br>"; //輸出變量a的值 $a = $a+1; //將變量a的值加1再次賦給變量a } test(); //調用函數test() test(); test(); echo $a; //$a,不在作用域下,不輸出 ?> </body> </html>
從上面得到的結果可以看出,每次調用函數test()的時候,變量a的值都會增加1。也就是說,每次調用函數結束以后,變量a都仍然存在。再次調用函數test()時,變量a將會使用上一次調用該函數后得到的值。同時從上面的例子我們也可以得出這樣的結論,靜態變量的作用范圍與局部變量相同,但是生命周期與全局變量相同。
我們可以這樣理解靜態變量。
只有函數首次被調用時,才取函數體內靜態變量的初始值。以后再次調用該函數時,靜態變量將取上次調用這個函數后得到的值。
在為靜態變量賦初值的時候,不可以將一個表達式賦給該靜態變量。