● 全域變數作用域為定義處至來源檔案結尾,儲存時期為定義後為其分配內存,程式退出後釋放記憶體;
● 局部變數作用域為局部,儲存時期為定義後分配內存,退出作用域後釋放內存;
● 全域變數預設為靜態變量,局部變數預設為自動變量,也可以聲明為靜態變量,靜態變數和自動變數的差異是儲存時期的區別,靜態變數的儲存時期是記憶體空間在程式運行期間都存在,程式退出才被釋放;
#● 自動變數記憶體空間在作用域內才存在,退出作用域後就被釋放。
靜態局部變數的特徵:
1.不會隨著函數的呼叫和退出而變化,不過,儘管該變數仍繼續存在,但不能使用它。當倘若再次呼叫定義它的函數時,它又可繼續使用,而且保存了前次被呼叫後留下的值
2.靜態局部變數只會初始化一次
3.靜態屬性只能被初始化為一個字元值或一個常數,不能使用表達式。即使局部靜態變數定義時沒有賦初值,系統會自動賦初值0(對數值型變數)或空字元(對字元變數);靜態變數的初始值為0。
4.當多次呼叫一個函數且要求在呼叫之間保留某些變數的值時,可考慮採用靜態局部變數。雖然用全域變數也可以達到上述目的,但全域變數有時會造成意外的副作用,因此仍以採用局部靜態變數為宜。
程式碼如下:
function test() { static $var = 5; //static $var = 1+1;就会报错 $var++; echo $var . ' '; } test(); //2 test(); //3 test(); //4echo $var; //报错:Notice: Undefined variable: var
關於靜態全域變數:
程式碼如下:
//全局变量本身就是静态存储方式,所有的全局变量都是静态变量 function static_global(){ global $glo; $glo++; echo $glo.'<br>'; } static_global(); //1 static_global(); //2 static_global(); //3 echo $glo . '<br>'; //3
所以靜態全域變數使用並不多。
上面是我整理給大家的在PHP中靜態變數和全域變量,希望未來會對大家有幫助。
相關文章:
一招搞定,php中閉套件函數裡面use的使用方法和區別,以及&引用的含義為你詳細解答
以上是在PHP中靜態變數和全域變數有哪些不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!