php函数不再识别在其外部定义的变量

时间:2012-06-23 08:50:23

标签: php function variables

我相对较新的PHP,我遇到了一个非常奇怪的问题。 让我举一个非常简单的代码的例子

$test = 'test';

function test(){
    echo $test;
}

test();

在上面的例子中,它过去工作得很好,因为调用test()函数而返回'test'。然而,就在今天它开始返回错误,说变量$ test是未定义的。我百分百肯定它以前工作得很好。这是PHP的一些更新?或者我在这里做错了什么?我正在使用wamp并在我的localhost上测试它。谢谢!

3 个答案:

答案 0 :(得分:3)

这是预期的行为,它被称为“变量范围”

请阅读:http://php.net/manual/en/language.variables.scope.php

其中一个“陷阱”是:

  

您可能会注意到这与C语言略有不同   因为C中的全局变量可自动用于函数   除非被本地定义明确覆盖。这可能会导致   人们可能会无意中改变全球性的一些问题   变量。在PHP中,全局变量必须在a中声明为全局变量   函数,如果它们将用于该函数。

答案 1 :(得分:2)

这是因为它超出了功能范围。要访问变量定义的外部函数,必须使用全局关键字。

$test = 'test';

function test(){
    global $test
    echo $test;
}

test();

请在此处阅读php手册链接中的变量范围:http://php.net/manual/en/language.variables.scope.php

答案 2 :(得分:1)

在函数内部,您需要为函数test中的变量test声明global $test;才有意义。此外,在离开括号范围时,在大括号{}内声明的任何变量都将被取消,而不仅仅是在函数内。