global在php是全局變量了,這個global只是頁面全局變量,如函數之外的變量我們可以在函數中直接使用global申明就可以獲取變量的值了。
實例代碼如下:
- <?php
- $a=12;
- function fn()
- {
- global $a;//使用外層$a變量,不使用這個方法$a為局部變量
- $a+=12;
- }
- echo '$a='.$a//輸出結果
- ?>
輸出的結果:$a=24
總結:在函數體內定義的global變量,函數體外可以使用,在函數體外定義的global變量不能在函數體內使用,代碼如下:
- $glpbal $a;
- $a=123;
- function f()
- {
- echo $a; //錯誤,
- }
- //再看看下面一例
- function f()
- {
- global $a;
- $a=123;
- }
- f();
- echo $a; //正確,可以使用
上面的實例只是基本的global全局變量知識,下面我們看看復雜點的,代碼如下:
- //A.php 文件
- <?php
- function Test_Global()
- {
- include 'B.php';
- Test();
- }
- $a = 0 ;
- Test_Global();
- echo $a;
- ?>
- //B.php 文件
- <?php
- function Test()
- {
- global $a;//申明函數體Sum內使用的$a變量為global全局變量
- $a =1;
- }
- ?>
為什么輸出的卻是0?!!
在用戶自定義函數中,一個局部函數范圍將被引入。任何用于函數內部的變量按缺省情況將被限制在局部函數范圍內(包括include 和 require 導入的文件內的變量)!
解釋:A.php文件的內Test_Global是定義好的第三方函數,該函數用include導入了B.php文件內的$a的global全局變量,所以$a被限制在Test_Global局部函數范圍內,所以B.php文件內的$a的作用范圍都在Test_Global內,而不是作用了整個A.php內….
解決方案:
1.沖出局部函數,代碼如下:
- //A.php 文件
- <?php
- function Test_Global()
- {
- Test();
- }
- include 'B.php'; //將include 從局部Test_Global函數中移出
- $a = 0 ;
- Test_Global();
- echo $a;
- ?>
- //B.php 文件
- <?php
- function Test()
- {
- global $a;
- $a =1;
- }
- ?>
global問題解析:
question:我在config.inc.php中定義了一些變量($a),在別的文件中函數外部 include("config.inc.php"),函數內部需要使用這些變量$a,如果沒有聲明的話,echo $a是打印不出來任何東西的。因此聲明global $a,但是有很多函數和很多變量,總不能不斷重復的這樣聲明吧?有什么好的解決辦法,請指點。
answer1:先在config.inc.php里定義常量:define(常量名,常量值)
再在其他需要用到的地方require 'config.inc.php',
然后就能在這個文件里直接使用這個常量了。
answer2:我也有個辦法,就是定義數組,如$x[a],$x,那樣就只要聲明global $x一個了。
answer3:我試了你的這個方法,不行啊。
answer4:改你的php.ini文件。
新聞熱點
疑難解答