本文章來詳細的介紹關于PHP中全局變量global的方法,有需要了解global函數使用方法的朋友可參考本文章.
變量的范圍即它定義的上下文背景(也就是它的生效范圍).大部分的 PHP 變量只有一個單獨的范圍.這個單獨的范圍跨度同樣包含了 include 和 require 引入的文件.
實例代碼如下:
這里變量 $a 將會在包含文件 b.inc 中生效.但是,在用戶自定義函數中,一個局部函數范圍將被引入.任何用于函數內部的變量按缺省情況將被限制在局部函數范圍內.例如:
實例代碼如下:
這個腳本不會有任何輸出,因為 echo 語句引用了一個局部版本的變量 $a,而且在這個范圍內,它并沒有被賦值.你可能注意到 PHP 的全局變量和 C 語言有一點點不同,在 C 語言中,全局變量在函數中自動生效,除非被局部變量覆蓋.這可能引起一些問題,有些人可能不小心就改變了一個全局變量.PHP 中全局變量在函數中使用時必須申明為global.
今天就遇到了php 全局變量不起作用的問題.先上一段簡單的代碼:
實例代碼如下:
上面的代碼中輸出是0,那是因為函數體Test內$a變量被缺省設置為局部變量,$a的作用域就是在Test內.修改代碼如下
實例代碼如下:
申明函數體Test內使用的$a變量為global全局變量后,使得$a的作用全局,所以輸出為1.
上面的實例只是基本的global全局變量知識,下面我們看看復雜點的:
//A.php 文件
實例代碼如下:
為什么輸出的卻是0?!!
在用戶自定義函數中,一個局部函數范圍將被引入.任何用于函數內部的變量按缺省情況將被限制在局部函數范圍內(包括include 和 require 導入的文件內的變量)!
解釋:A.php文件的內Test_Global是定義好的第三方函數,該函數用include導入了B.php文件內的$a的global全局變量,所以$a被限制在Test_Global局部函數范圍內,所以B.php文件內的$a的作用范圍都在Test_Global內,而不是作用了整個A.php內….
解決方案:
1. 沖出局部函數
實例代碼如下:
2.優(yōu)秀的訪問器
實例代碼如下: