$GLOBALS——參考全域作用域中可用的全部變數,
$GLOBALS一個包含了全部變數的全域組合陣列,變數的名字就是陣列的鍵,(即所有出現過的全域變數,都可通過$GLOBALS獲取到)
注釋: “Superglobal”也稱為自動化的全域變數,這就表示其在腳本的所有作用域中都是可用的,不需要在函式或方法中用global $variable;來訪問它,
與所有其他超全域變數不同,$GLOBALS在PHP中總是可用的,
在PHP中,定義在函式體外的全域變數,函式內部是不能直接獲取的,所以需要global宣告或者$GLOBALS[]來獲取,
$GLOBALS 和 global 的區別:
- $GLOBALS['variable'] 是外部的全域變數$variable本身,
- global $variable 是外部$variable的同名參考或者指標,把 global $variable; 當成是 $variable = & $GLOBALS['variable']; 的簡寫,也就是在函式產生一個指向函式外部變數的別名變數,而不是真正的函式外部變數,【PHP變數函式里指出:在 Zend 引擎 1 代,它驅動了 PHP4,對于變數的 static 和 global 定義是以參考的方式實作的,例如,在一個函式域內部用 global 陳述句匯入的一個真正的全域變數實際上是建立了一個到全域變數的參考,】
下面一個簡單的例子說明:
$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 的相同點:
- 可以在函式內部使用函式外宣告的變數;
- 在函式體外宣告全域變數沒有意義,在函式內部也無法使用,
例子:
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();
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/93449.html
標籤:PHP
上一篇:swoole擴展怎么用
下一篇:PHP高并發和大流量怎么解決?
