變數的範圍即它定義的上下文背景(也就是它生效的範圍)。大部分的 PHP 變數只有一個單獨的範圍。這個單獨的範圍跨度同樣包含了include 和require 引入的檔案
例如:
#程式碼如下:
<?php $a = 1; include 'b.inc'; ?>
這裡變數$a 將會在包含檔案 b.inc 中生效。但是,在使用者自訂函數中,一個局部函數範圍將會被引入。任何用於函數內部的變數按缺省情況將被限制在局部函數範圍內,此時為局部變數。
PHP 中全域變數在函數中使用時必須申明為global。
在函數中使用global宣告的變數即為全域變量,可以在函數外使用。注意:global宣告變數時,不能直接對變數賦值,需要先宣告後賦值。
在全域範圍內,也可以透過$GLOBALS存取全域變量,在函數內不需要使用global關鍵字來存取全域變數了。 $GLOBALS 是一個關聯數組,每個變數為一個元素,鍵名對應變數名,值對應變數的內容。 $GLOBALS 之所以在全域範圍內存在,是因為 $GLOBALS 是一個超全域變數。
常數可以不用理會變數的作用域而在任何地方定義和存取;
變數範圍的另一個重要特性是靜態變數(static variable# )。靜態變數僅在局部函數域中存在,但當程式執行離開此作用域時,其值並不會遺失。靜態變數僅在第一次呼叫時初始化,宣告時可以對其賦值,不能是表達式值。如果在宣告中以表達式的結果對其賦值會導致解析錯誤。
當把一個引用(帶上&的變數或物件)賦值給一個靜態變數時,引用並不是靜態地儲存的,第二次呼叫函數時靜態變數其值並沒有被記住。同樣,當把一個引用(帶上&的變數或物件)賦值給global變數時,此變數的變化對函數外不起作用,作用範圍只在該函數內。
以上是php的變數範圍是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!