我很好奇,想知道爲什麼下面的代碼的行爲不同?爲什麼我不能直接在PHP中引用全局變量?
下不起作用:
$_variable &= global $_global;
echo $_variable;
以下工作:
global $global;
$_variable &= $_global;
echo $_variable;
?
我很好奇,想知道爲什麼下面的代碼的行爲不同?爲什麼我不能直接在PHP中引用全局變量?
下不起作用:
$_variable &= global $_global;
echo $_variable;
以下工作:
global $global;
$_variable &= $_global;
echo $_variable;
?
思考更像是動詞而不是形容詞。你的第一個例子說「引用將全局稱爲$ _global分配給$ _variable」。但是global
不是一個形容詞。第二個例子是正確的,對php說:「將$ _global作爲全局對待」或者「global-ify $ _global」,然後進行分配。
這個答案對我來說最有意義。謝謝! – dkinzer 2010-04-08 19:31:51
global
是一種特殊的語言結構,它不能在操作爲您例如,在做使用1
的global
關鍵字用來說,「這個名字使用全局變量,而不是一個本地的「。最常見的用法是這樣的:
$name = 'Slokun';
printName();
function printName() {
global $name; // Use the global, rather than function-local, version
echo $name;
}
這將打印
Slokun
對比:
$name = 'Slokun';
printName();
function printName() {
echo $name;
}
這將不打印任何東西global
關鍵字
這並不完全是問題的答案(根據(錯誤的)標題,這是):很明顯OP已經知道'global'關鍵字,他的問題是:爲什麼我不能使用操作中的'global'關鍵字,就像我在第一個例子中所做的那樣? – 2010-04-08 19:28:44
你的代碼應該是錯誤的。通過引用傳遞值應爲:
1)
$_variable =& $_global;
2.)
$_variable = & $_global;
3.)
$_variable = &$_global;
1〜3是相同的東西。
@Pekka:尼斯的答案,但爲什麼我們要使用'global'呢?我知道很多語言,您不需要在函數中指定需要該函數外部的(全局)變量。 – 2010-04-08 19:09:47
@Marcel由於PHP是動態類型的,而且隨時可以創建變量,因此沒有具體的聲明。強類型語言(或者甚至是那些讓你聲明的變量)有你的一個實例聲明變量,在一個範圍,只要在範圍上是一個被使用,並且還沒有被覆蓋的新版本同名。由於沒有正式的聲明,PHP假定你總是聲明它是本地作用域,允許你重新使用變量名。 – Tarka 2010-04-08 19:13:34
我知道,作爲一般規則,一個是從使用全局變量氣餒,但有時人是被迫(我編程Drupal和它不可能做任何事情沒有興趣在這裏和那裏調用一個全局變量 - 如全球$用戶例如)。 – dkinzer 2010-04-08 19:28:15