为什么我定义的变量未定义


Why is my defined variable undefined

我在文档顶部声明了一个新变量$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;
}