【问题标题】:Why is my defined variable undefined [duplicate]为什么我定义的变量未定义[重复]
【发布时间】:2016-01-10 14:09:25
【问题描述】:

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

注意:未定义变量:var

这是我的代码:

$var = "abc";

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

【问题讨论】:

标签: php scope


【解决方案1】:

在 PHP 中,函数不能访问全局范围内的变量,除非使用关键字 global 将变量“导入”到函数的范围内。

你可以通过这样做来修复它:

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

在此处阅读有关范围界定的更多信息:http://php.net/manual/en/language.variables.scope.php

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

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

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

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

值得一提:

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

【讨论】:

  • 打败我。好帖子!
【解决方案2】:

这是因为变量的作用域,要么定义为全局,要么作为参数传递。

检查此帖子下的 cmets: Variables Scope

【讨论】:

    【解决方案3】:

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

    你可以这样做:

    $var = "abc";
    
    func ();
    function func() {
        global var;
        echo $var;
    }
    

    【讨论】:

      猜你喜欢
      • 2015-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-03
      • 1970-01-01
      相关资源
      最近更新 更多