在php程序開發中,很多開發者沒有注意到$GLOBALS[]和global存在的差別,這兩種寫法其實差別挺大的、並非只是字面上面的差別,下面我來了解一下他們的具體差別吧。
具體差別
1.$GLOBALS['var']是外部的全局變量本身(實實在在的外部$var本身)。
2.global $var是外部$var的同名引用或者指針(可以理解為是一個外部$var的替身)。
舉例說明一下:
Copy to Clipboard引用的內容:[www.bkjia.com] <?php上面代碼的輸出結果為 test1
Copy to Clipboard引用的內容:[www.bkjia.com] <?php上面代碼的輸出有點意外,結果為test2
為什麼會輸出test2呢?其實就是因為$var1的引用指向了$var2的引用地址(通俗的講test函數中的$var1是一個替身)。導致實質的值沒有改變。
我們再來看一個例子。
Copy to Clipboard引用的內容:[www.bkjia.com] <?php因為$var1已經被真實的刪除了,所以什麼東西輸出不了。
Copy to Clipboard引用的內容:[www.bkjia.com] <?php這次又意外的輸出了test1。證明刪除的只是別名或引用(替身),變量本身的值沒有受到任何的改變。
明白了吧?
也就是說global $var其實就是$var = &$GLOBALS['var']調用外部變量的一個別名而已。