为什么定义的变量未定义

时间:2016-01-10 14:09:25

标签: php scope

我在文档顶部声明了一个新变量$var。之后,我调用了一个应该输出这个变量的函数 不幸的是,我收到以下消息:

  

注意:未定义的变量:var

这是我的代码:

$var = "abc";

func ();
function func() {
    echo $var;
}

3 个答案:

答案 0 :(得分:2)

在PHP中,函数无法访问全局范围内的变量,除非使用关键字global来导入'将变量放入函数的范围。

你可以通过这样做来解决它:

function func() {
    global $var;
    echo $var;
}

在此处详细了解范围界定:http://php.net/manual/en/language.variables.scope.php

  

函数内使用的任何变量默认都限制在本地函数范围内。

     

在PHP中,如果要在函数中使用全局变量,则必须在函数内声明全局变量。

也可以使用$GLOBALS访问全局变量,但除非绝对必要,否则我会避免使用它。

  

从全局范围访问变量的第二种方法是使用特殊的PHP定义的$ GLOBALS数组。

值得一提:

值得链接到关于全局变量的讨论,以及为什么你可能不想使用它们:Globals are evil 。我说首选使用类,或者只是将变量作为参数传递给函数。我不会说不使用全局变量,但至少要注意它的使用。

答案 1 :(得分:0)

这是因为变量的范围,要么将其定义为全局,要么将其作为参数传递。

查看此帖子下的评论: Variables Scope

答案 2 :(得分:0)

变量的范围是错误的。您需要将其作为函数参数传递或在函数中将其声明为Global。请查看function scoping

你可以这样做:

$var = "abc";

func ();
function func() {
    global var;
    echo $var;
}