- PHP與MySQL高性能應用開發
- 杜江
- 377字
- 2019-06-28 14:09:24
1.7 global關鍵字與global數組的區別
你也許記得,前面我們提到過global關鍵字和global數組。那么問題來了,它們長得如此像,似乎功能也相同,到底有什么區別?我們分別來看一下。
$GLOBALS['var']是外部的全局變量本身,global $var是外部$var的同名引用或者指針,如代碼清單1-7所示:
代碼清單1-7刪除全局變量
<? php $var1 = 1; function test(){ unset($GLOBALS['var1']); } test(); echo $var1; ?>
因為$var1變量被刪除,所以沒有內容顯示出來。請再看如下代碼:
<? php $var1 = 1; function test(){ global $var1; unset($var1); } test(); echo $var1; ?>
此段代碼意外地打印了1。這是為什么?因為刪除的只是個別名引用,其本身的值并沒有任何更改。
global $var與&$GLOBALS['var']等價,相當于調用外部變量的一個別名,所以上面代碼中的$var1和$GLOBALS['var1']指向的是同一個變量。
PHP的全局變量和C有一點點不同。在C語言中的全局變量在函數體內無效。而在PHP中,在函數中想調用外部全局變量時可用global聲明。PHP的“全局”不是指整個網站,而是應用于當前頁面,包括include或require的全部文件。
綜合以上內容,我們總結出如下結論:
□ $GLOBALS['var']是外部的全局變量本身。
□ global $var是外部$var的同名引用或者指針。