2010-04-08 88 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是相同的东西。

相关问题