程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php $GLOBALS超全局變量分析

php $GLOBALS超全局變量分析

編輯:關於PHP編程

       php中有一個不為很多人所用的超全局變量$GLOBALS。合理使用這個變量能使工作變得更加有效率,本篇文章主要分析一下這個超全局變量的用法以及$GLOBALS和global的區別。

      $GLOBALS定義:引用全局作用域中可用的全部變量(一個包含了全部變量的全局組合數組。變量的名字就是數組的鍵),與所有其他超全局變量不同,$GLOBALS在PHP代碼中任何地方總是可用的,自己可以通過打印$GLOBALS這個變量的結果就知道了。

      在PHP生命周期中,定義在函數體外部的所謂全局變量,函數內部是不能直接獲得的。如果要在函數體內訪問外部定義的全局變量,可以通過global聲明或者直接使用$GLOBALS來進行訪問,例如:

      $var1='www.Alixixi.com';

      $var2='www.google.cn';

      test();

      function test(){

      $var1='taobao';

      echo $var1,'

      ';

      global $var1;

      echo $var1,'

      ';

      echo $GLOBALS['var2'];

      }

      結果將打印為:

      taobao

      www.Alixixi.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']。調用外部變量的一個別名而已。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved