2013-05-01 132 views
0

我试图在函数内部访问global $foo,但它不会工作。我不想在调用函数时添加它。最佳做法是什么?

global $foo; 
$foo = 'norman'; 

function kit($name) 
{ 
if($foo == $name){echo 'Works';}else{echo 'Does not work';} 
} 

kit('norman') 
+0

我想你忘了阅读[全局上的文档(http://php.net/manual/en/language.variables.scope.php)。这太糟糕了,因为所有的答案都在那里。什么阻止你阅读文档? – 2013-05-01 10:06:48

回答

3

你需要“进口”到本地函数范围由它声明为全球功能:

function kit($name) 
{ 
    global $foo; 
    if($foo == $name){echo 'Works';}else{echo 'Does not work';} 
} 

您可以安全地从otuside功能删除全局修改。

+0

全局$ foo设置在diff页面中。所以我再次在函数中做全局$ foo? – Norman 2013-05-01 10:21:37

+0

如果按页面表示文件,则表示没有。包含的文件总是继承全局范围。你只需要在函数内部执行'global $ foo'。 – alexn 2013-05-01 10:22:30

1

声明在函数外部的全局变量不能在函数内部被访问尝试声明全局函数本身。

改成这样

function kit($name) 
{ 
    global $foo; 
    if($foo == $name){echo 'Works';}else{echo 'Does not work';} 
} 
+0

与我所做的有什么不同? – Norman 2013-05-01 10:14:21

+0

您需要将全局变量添加到函数中。 – 2013-05-01 10:15:14

+0

这是告诉套件函数使用全局版本的$ foo变量,没有全局$ foo;在你想要使用它的每个函数中指定,那么它将创建它自己的本地版本的变量 – Anigel 2013-05-01 10:18:46