我相对较新的PHP,我遇到了一个非常奇怪的问题。 让我举一个非常简单的代码的例子
$test = 'test';
function test(){
echo $test;
}
test();
在上面的例子中,它过去工作得很好,因为调用test()函数而返回'test'。然而,就在今天它开始返回错误,说变量$ test是未定义的。我百分百肯定它以前工作得很好。这是PHP的一些更新?或者我在这里做错了什么?我正在使用wamp并在我的localhost上测试它。谢谢!
答案 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;
才有意义。此外,在离开括号范围时,在大括号{}内声明的任何变量都将被取消,而不仅仅是在函数内。