php中有一個不為很多人所用的超全域變數$GLOBALS。合理使用這個變數能使工作變得更加有效率,本篇文章主要分析一下這個超全域變數的用法以及$GLOBALS和global的區別。
$GLOBALS定義:引用全域範圍中可用的全部變數(一個包含了全部變數的全域群組合數組。變數的名字就是數組的鍵),與所有其他超全域變數不同,$GLOBALS在PHP代碼中任何地方總是可用的,自己可以通過列印$GLOBALS這個變數的結果就知道了。
在PHP生命週期中,定義在函數體外部的所謂全域變數,函數內部是不能直接獲得的。如果要在函數體內訪問外部定義的全域變數,可以通過global聲明或者直接使用$GLOBALS來進行訪問,例如:
';global $var1;echo $var1,'
'; echo $GLOBALS['var2'];}
結果將列印為:
taobao
www.phpernote.com
www.google.cn
下面主要說明一下global和$GLOBALS的區別:
$GLOBALS['var']是外部的全域變數本身,而global $var是外部$var的同名引用或者指標,也就是說global在函數產生一個指向函數外部變數的別名變數,而不是真正的函數外部變數,而$GLOBALS[]確確實實調用的是外部的變數,函數內外會始終保持一致。下面通過例子說明一下:
$var1=1;$var2=2;function test(){$GLOBALS['var2']=&$GLOBALS['var1'];} test();echo $var2;
列印結果為1
$var1=1;$var2=2;function test(){global $var1,$var2;$var2=&$var1;} test();echo $var2;
列印結果為2。為什麼會列印結果為2呢?其實就是因為$var1的引用指向了$var2的引用地址。導致實質的值沒有改變。我們再來看一個例子吧。
$var1=1;function test(){unset($GLOBALS['var1']);} test();echo $var1;
因為$var1被刪除了,所以什麼東西都沒有列印。
$var1=1;function test(){global $var1;unset($var1);} test();echo $var1;
列印結果為1。證明刪除的只是別名|引用,起本身的值沒有受到任何的改變。也就是說global $var其實就是$var=&$GLOBALS['var']。調用外部變數的一個別名而已。
您可能感興趣的文章
- Thinkphp 模板中常用的系統變數總結
- smarty模板中使用php函數以及smarty模板中如何對一個變數使用多個函數
- PHP常用的判斷變數的函數
- php中在變數和函數前加static關鍵字之後的區別
- PHP 利用 Curl Functions 實現多線程抓取網頁和下載檔案
- php的內建變數 DIRECTORY_SEPARATOR 解析
- php 輸出昨天,今天,明天是星期幾的方法
- thinkphp 的 Action 控制器中的系統常量總結
http://www.bkjia.com/PHPjc/764106.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/764106.htmlTechArticlephp中有一個不為很多人所用的超全域變數$GLOBALS。合理使用這個變數能使工作變得更加有效率,本篇文章主要分析一下這個超全域變數的用...