php對global變量的解析是:Global的作用是定義全局變量,但是這個全局變量不是應用于整個網站,而是應用于當前頁面,包括include或require的所有文件。
例代碼如下:
如果沒有全局變量global在方法內是不能獲得$a,$b值的,所以在方法里面想用外面的變量就需要先聲明這個變量為全局變量,這樣就可以使用了.
總結:在函數體內定義的PHP Global變量,函數體外可以使用,在函數體外定義的global變量不能在函數體內使用,$glpbal $a; $a=123; function f() { echo $a; //錯誤, }
再看看下面一例,代碼如下:
在用戶自定義函數中,一個局部函數范圍將被引入,任何用于函數內部的變量按缺省情況將被限制在局部函數范圍內(包括include 和 require 導入的文件內的變量)!
解釋:A.php文件的內Test_Global是定義好的第三方函數,該函數用include導入了B.php文件內的$a的global全局變量,所以$a被限制在Test_Global局部函數范圍內,所以B.php文件內的$a的作用范圍都在Test_Global內,而不是作用了整個A.php內….
解決方案:
1.沖出局部函數A.php 文件,代碼如下:
B.php 文件
2.優秀的訪問器,A.php 文件,代碼如下:
B.php 文件
再來看看$GLOBALS[],代碼如下:
2.為什么$var2的打印結果是1,而$var4的打印結果為2呢?其實就是因為$var3的引用指向了$var4的引用地址。$var4的實際值并沒有改變。官方的解釋是:$GLOBALS['var']是外部的全局變量本身,global $var是外部$var的同名引用或者指針。
也許這個例子還不是很清晰,我再引入一個例子,代碼如下:
1 $var1的值被刪除,而$var2的值還存在,這就證明,$var2只是別名引用,本身的值沒有受到任何的改變,也就是說global $var其實就是$var = &$GLOBALS['var'],調用外部變量的一個別名而已!
下一篇 二種遍歷關聯數組的方法