PHP 超全局變量之$GLOBALS

$GLOBALS——引用全局做用域中可用的所有變量。html


$GLOBALS一個包含了所有變量的全局組合數組。變量的名字就是數組的鍵。(即全部出現過的全局變量,均可經過$GLOBALS獲取到)數組

註釋:
「Superglobal」也稱爲自動化的全局變量。這就表示其在腳本的全部做用域中都是可用的,不須要在函數或方法中用global $variable;來訪問它。
與全部其餘超全局變量不一樣,$GLOBALS在PHP中老是可用的。

 在PHP中,定義在函數體外的全局變量,函數內部是不能直接獲取的,因此須要global聲明或者$GLOBALS[]來獲取。函數

$GLOBALS 和 global 的區別:spa

  • $GLOBALS['variable'] 是外部的全局變量$variable自己。
  • global  $variable 是外部$variable的同名引用或者指針。也就是在函數產生一個指向函數外部變量的別名變量,而不是真正的函數外部變量。 

下面一個簡單的例子說明:指針

$a = 1;
$b = 2;
function Test1(){
    echo $a; //輸出 :Notice: Undefined variable: a
    global $a;
    echo $a; //輸出: 1
    unset($a);
}
Test1();
echo $a; // 輸出:1
function Test2(){
    echo $GLOBALS['a']; //輸出: 1
    unset($GLOBALS['a']);
}
Test2();
echo $a;//輸出:Notice: Undefined variable: a

$GLOBALS 和 global 的相同點:code

  • 能夠在函數內部使用函數外聲明的變量;
  • 在函數體外聲明全局變量沒有意義,在函數內部也沒法使用。

例子:htm

global $a;
$a = 1;
function Test3(){
    echo $a; //輸出:Notice: Undefined variable: a
}
Test3();

$GLOBALS['b'] = 2;
function Test4(){
    echo $b; //輸出:Notice: Undefined variable: b
}
Test4();
相關文章
相關標籤/搜索