我在文档顶部声明了一个新变量$var
。之后,我调用了一个函数,该函数应该输出这个变量
不幸的是,我收到以下消息:
注意:未定义变量:var
这是我的代码:
$var = "abc";
func ();
function func() {
echo $var;
}
在PHP中,函数无法访问全局范围内的变量,除非使用关键字global
将变量"导入"到函数的范围中。
你可以通过这样做来修复它:
function func() {
global $var;
echo $var;
}
在此处阅读有关作用域的更多信息:http://php.net/manual/en/language.variables.scope.php
默认情况下,函数内部使用的任何变量都仅限于本地函数范围。
在PHP中,如果要在函数中使用全局变量,则必须在函数内部声明全局变量。
全局变量也可以使用$GLOBALS
访问,尽管除非绝对必要,否则我会避免使用它。
从全局范围访问变量的第二种方法是使用特殊的PHP定义的$GLOBALS数组。
值得一提的是:
值得链接到关于全局变量的讨论,以及为什么你可能不想使用它们:全局变量是邪恶的。我想说,人们更倾向于使用类,或者简单地将变量作为参数传递给函数。我不会说不使用全局变量,但至少要注意它的使用。
这是因为变量的作用域,要么定义为全局,要么将其作为参数传递。
查看此帖子下的评论:变量范围
变量的作用域是错误的。您需要将其作为函数参数传递,或者在函数中将其声明为Global。请查看功能范围。
你可以这样做:
$var = "abc";
func ();
function func() {
global var;
echo $var;
}