簡體   English   中英

PHP。 通過使用“ global $ var”獲得全局變量,我們是否獲得了全局var的副本或對該全局變量的引用?

[英]PHP. by using “global $var” to get a global variable, do we get a copy of the global var or get a reference to that global variable?

global $user vs $user = $GLOBALS['user']

通過使用“ global $ var”獲取全局變量,我們是獲取全局var的副本還是獲取對該全局變量的引用?

global $user;

$ user是全局對象的副本還是對實際全局變量的引用?

謝謝。

通過使用global $var ,名為“ var”的全局變量將被導入到函數的本地范圍中(通過創建引用來完成)。

這與$GLOBALS不同,后者是一個超全局變量。 無論范圍如何,它始終無處不在。

但是,這與參考不同。 如果您真的想了解變量及其對變量的引用,建議使用Derick Rethans的PDF: PHP參考:深入研究 (PDF)。

通過與global $var; 您總是有一個引用全局變量的局部變量。

以下代碼:

$var = 1;

function test() {
  global $var;

  $var++;
}

test();
echo $var;

等效於:

$var = 1;

function test() {
  $GLOBALS['var']++;
}

test();
echo $var;

引用$ GLOBALS的文檔

包含對所有變量的引用的關聯數組,這些變量當前在腳本的全局范圍內定義。 變量名是數組的鍵。

一個簡單的測試用例:

$foo = "foo";
echo $GLOBALS["foo"];         // foo
echo $GLOBALS["foo"] = "bar"; // bar
echo $foo;                    // bar

都不行 編譯器將該變量名稱的使用解析為全局范圍內的相應變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM