首頁 >後端開發 >php教程 >在PHP中靜態變數和全域變數有哪些不同?

在PHP中靜態變數和全域變數有哪些不同?

亚连
亚连原創
2018-05-17 14:06:173600瀏覽

● 全域變數作用域為定義處至來源檔案結尾,儲存時期為定義後為其分配內存,程式退出後釋放記憶體;

● 局部變數作用域為局部,儲存時期為定義後分配內存,退出作用域後釋放內存;

● 全域變數預設為靜態變量,局部變數預設為自動變量,也可以聲明為靜態變量,靜態變數和自動變數的差異是儲存時期的區別,靜態變數的儲存時期是記憶體空間在程式運行期間都存在,程式退出才被釋放;

#● 自動變數記憶體空間在作用域內才存在,退出作用域後就被釋放。

靜態局部變數的特徵:

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.&#39;<br>&#39;;
}
static_global(); //1
static_global(); //2
static_global(); //3
echo $glo . &#39;<br>&#39;; //3

所以靜態全域變數使用並不多。

上面是我整理給大家的在PHP中靜態變數和全域變量,希望未來會對大家有幫助。

相關文章:

PHP的變數作用域和全域變數(圖文教學)

一招搞定,php中閉套件函數裡面use的使用方法和區別,以及&引用的含義為你詳細解答

#詳細講解php 類別、方法關鍵字教程

#

以上是在PHP中靜態變數和全域變數有哪些不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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