2010-04-08 85 views
1

我很好奇,想知道爲什麼下面的代碼的行爲不同?爲什麼我不能直接在PHP中引用全局變量?

下不起作用:

$_variable &= global $_global; 
echo $_variable; 

以下工作:

global $global; 
$_variable &= $_global; 
echo $_variable; 

+0

@Pekka:尼斯的答案,但爲什麼我們要使用'global'呢?我知道很多語言,您不需要在函數中指定需要該函數外部的(全局)變量。 – 2010-04-08 19:09:47

+0

@Marcel由於PHP是動態類型的,而且隨時可以創建變量,因此沒有具體的聲明。強類型語言(或者甚至是那些讓你聲明的變量)有你的一個實例聲明變量,在一個範圍,只要在範圍上是一個被使用,並且還沒有被覆蓋的新版本同名。由於沒有正式的聲明,PHP假定你總是聲明它是本地作用域,允許你重新使用變量名。 – Tarka 2010-04-08 19:13:34

+0

我知道,作爲一般規則,一個是從使用全局變量氣餒,但有時人是被迫(我編程Drupal和它不可能做任何事情沒有興趣在這裏和那裏調用一個全局變量 - 如全球$用戶例如)。 – dkinzer 2010-04-08 19:28:15

回答

1

思考更像是動詞而不是形容詞。你的第一個例子說「引用將全局稱爲$ _global分配給$ _variable」。但是global不是一個形容詞。第二個例子是正確的,對php說:「將$ _global作爲全局對待」或者「global-ify $ _global」,然後進行分配。

+0

這個答案對我來說最有意義。謝謝! – dkinzer 2010-04-08 19:31:51

2

global是一種特殊的語言結構,它不能在操作爲您例如,在做使用1

2

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關鍵字

+0

這並不完全是問題的答案(根據(錯誤的)標題,這是):很明顯OP已經知道'global'關鍵字,他的問題是:爲什麼我不能使用操作中的'global'關鍵字,就像我在第一個例子中所做的那樣? – 2010-04-08 19:28:44

0

你的代碼應該是錯誤的。通過引用傳遞值應爲:

1)

$_variable =& $_global; 

2.)

$_variable = & $_global; 

3.)

$_variable = &$_global; 

1〜3是相同的東西。

相關問題