程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 【PHP基礎知識】$GLOBALS[]和global區別

【PHP基礎知識】$GLOBALS[]和global區別

編輯:關於PHP編程

在php程序開發中,很多開發者沒有注意到$GLOBALS[]和global存在的差別,這兩種寫法其實差別挺大的、並非只是字面上面的差別,下面我來了解一下他們的具體差別吧。

具體差別

1.$GLOBALS['var']是外部的全局變量本身(實實在在的外部$var本身)。

2.global $var是外部$var的同名引用或者指針(可以理解為是一個外部$var的替身)。

舉例說明一下:

Copy to ClipboardLiehuo.Net Codes引用的內容:[www.bkjia.com] <?php
$var1 = "test1";
$var2 = "test2";
function test(){
$GLOBALS['var2'] = &$GLOBALS['var1'];
}
test();
echo $var2; // 將輸出 test1
?>

上面代碼的輸出結果為 test1

Copy to ClipboardLiehuo.Net Codes引用的內容:[www.bkjia.com] <?php
$var1 = "test1";
$var2 = "test2";
function test(){
global $var1,$var2;
$var2 = &$var1;
}
test();
echo $var2; // 將輸出test2
?>

上面代碼的輸出有點意外,結果為test2

為什麼會輸出test2呢?其實就是因為$var1的引用指向了$var2的引用地址(通俗的講test函數中的$var1是一個替身)。導致實質的值沒有改變。

我們再來看一個例子。

Copy to ClipboardLiehuo.Net Codes引用的內容:[www.bkjia.com] <?php
$var1 = "test1";
function test(){
unset($GLOBALS['var1']);
}
test();
echo $var1; // 什麼也輸出不了
?>

因為$var1已經被真實的刪除了,所以什麼東西輸出不了。

Copy to ClipboardLiehuo.Net Codes引用的內容:[www.bkjia.com] <?php
$var1 = "test1";
function test(){
global $var1;
unset($var1);
}
test();
echo $var1; // 輸出 test1
?>

這次又意外的輸出了test1。證明刪除的只是別名或引用(替身),變量本身的值沒有受到任何的改變。

明白了吧?

也就是說global $var其實就是$var = &$GLOBALS['var']調用外部變量的一個別名而已。

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