PHP學習:PHP超全域性變數(Superglobal)$GLOBALS的介紹以及和global的區別
PHP超全域性變數有很多,如下的都屬於超全域性變數Superglobal
$GLOBALS,$_SERVER,$_GET,$_POST,$_FILES,$_COOKIE,$_SESSION,$_REQUEST,$_ENV。
官方說明:
$GLOBALS — 引用全域性作用域中可用的全部變數。
一個包含了全部變數的全域性組合陣列。變數的名字就是陣列的鍵。
即出現過的全域性變數,就可以通過$GLOBALS這個陣列取得。
PHP生命週期中,定義在函式體外部的所謂全域性變數,函式內部是不能直接獲得的。
- <?php
- $foo = “Example content”;
- test();
- function test() {
- $foo = “local variable”;
- echo `$foo in current scope: ` . $foo . “<br>”;
- echo `$foo in global scope: ` . $GLOBALS[“foo”] . “<br>”;
- }
如上的例子,要訪問外部的$foo必須使用 $GLOBALS陣列。對於通過include檔案進來的外部全域性變數也適用。
php中global也有這樣的功能。它和$GLOBALS的區別在於。
global在函式產生一個指向函式外部變數的別名變數,而不是真正的函式外部變數。
$GLOBALS[]確確實實呼叫是外部的變數,函式內外會始終保持一致!
對於類中的成員變數,類中函式必須使用$this->的方式訪問,不能用$GLOBALS方式:
- <?php
- test{
- public $count=0;
- public function add(){
- $this->count=$this->count+2;
- return $this->count;
- }
- }
- $a=new test();
- echo $a->add();
- ?>
而不能直接如下寫法
$count=$count+2;
return $count;
- <?php
- $foo = “Example content”;
- test();
- function test() {
- unset( $GLOBALS[“foo”] );
- }
- echo $foo;
上述程式碼執行,會報錯:Undefined variable: foo。說明$GLOBALS[“foo”]就是外面的$foo本身。
- <?php
- $foo = “Example content”;
- test();
- function test() {
- global $foo;
- unset($foo);
- }
- echo $foo;
上述程式碼改成了global方式,執行後,成功列印出Example content
說明unset並未真正釋放掉$foo變數。
本文轉自cnn23711151CTO部落格,原文連結:http://blog.51cto.com/cnn237111/1043302 ,如需轉載請自行聯絡原作者
相關文章
- PHP 超級全域性變數PHP變數
- PHP超全域性變數$_SERVER分析PHP變數Server
- python全域性變數和區域性變數, globalPython變數
- php傳引用和全域性變數PHP變數
- 全域性變數和靜態變數的區別變數
- [Python學習] 專題六.區域性變數、全域性變數global、匯入模組變數Python變數
- PHP的靜態變數介紹PHP變數
- 一個超級簡單的PHP超全域性變數管理擴充套件PHP變數套件
- 區域性變數和全域性變數變數
- 區域性變數和全域性變數(靜態和非靜態)區別變數
- 修改全域性變數時,可變型別和不可變型別的區別變數型別
- PHP 中 include 和 require 的概要及區別介紹PHPUI
- 成員變數、全域性變數、例項變數、類變數、靜態變數和區域性變數的區別變數
- java 全域性變數和區域性變數Java變數
- JavaScript —— 區域性變數和全域性變數JavaScript變數
- jmeter全域性變數和區域性變數JMeter變數
- Python中的全域性變數和區域性變數Python變數
- js-js的全域性變數和區域性變數JS變數
- Python的全域性和區域性變數Python變數
- php中explode與split的區別介紹PHP
- javascript中的作用域(全域性變數和區域性變數)JavaScript變數
- Python的區域性變數和全域性變數使用解惑Python變數
- 靜態全域性變數和全域性變數變數
- 全域性變數與區域性變數變數
- 成員變數和區域性變數的區別變數
- C語言區域性變數、全域性變數、靜態區域性變數、靜態全域性變數C語言變數
- c 語言中巨集定義和定義全域性變數的區別變數
- JavaScript全域性作用域下,變數加var和不加var的區別。JavaScript變數
- PHP變數與常量學習PHP變數
- Java區域性變數與全域性變數Java變數
- 【c】全域性變數與區域性變數變數
- node 全域性物件和全域性變數物件變數
- 學習變數的目的及基本資料型別介紹變數資料型別
- SQLServer全域性變數詳介SQLServer變數
- Oracle全域性資料庫名、環境變數和sid的區別Oracle資料庫變數
- PHP 中的 -> 和 :: 的區別PHP
- python全域性變數與區域性變數Python變數
- PHP中的型別約束介紹PHP型別