Global是php中一個比較特殊的指令,大家直接叫他超級全域變數了,下面我來介紹我今天在使用Global定義全域學習筆記了
#很不習慣PHP中的變數作用域,PHP中函數變數和全域是完全隔絕的,也就是無法互相存取。
例如下面這樣:
程式碼如下:
$test = 123; abc(); //这里什么都不输出,因为访问不到$test变量 function abc(){ echo($test); }$test = 123; abc(); //这里什么都不输出,因为访问不到$test变量 function abc(){ echo($test); }
如果,你想在函數內部存取外部變量,你需要這樣:
程式碼如下:
$test = 123; abc(); //输出123 function abc(){ global $test; echo($test); }$test = 123; abc(); //输出123 function abc(){ global $test; echo($test); }
但如果我們在函數中定義全域變數呢,像下面這樣:
程式碼如下:
function abc(){ global $test; $test = 123; } abc(); echo($test); //输出123function abc(){ global $test; $test = 123; } abc(); echo($test);
//輸出123
透過這種方式,我們可以在外部存取到函數內部定義的變數
在使用者自訂函數中,一個局部函數範圍將會被引入。任何用於函數內部的變數按缺省情況將被限制在局部函數範圍內(包括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; } ?>
2.優秀的存取器
#程式碼如下:
//A.php 檔案
<?php include 'B.php'; $a =0; Set_Global($a); echo $a; ?> //B.php 文件 <?php function Set_Global(&$var) { $var=1; } ?>
以上是php怎樣定義全域變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!