我对php比较陌生,遇到了一个非常奇怪的问题。让我举一个非常简单的代码示例
$test = 'test';
function test(){
echo $test;
}
test();
在上面的示例中,它过去工作得非常好,作为调用 test() 函数的结果返回“test”。但是,就在今天它开始返回错误,说变量 $test 未定义。我 100% 确信它以前工作得很好。这是php中的一些更新吗?还是我在这里做错了什么?我正在使用 wamp 并在我的本地主机上进行测试。谢谢!
这是预期的行为,称为“可变范围”
阅读: http: //php.net/manual/en/language.variables.scope.php
“陷阱”之一是:
您可能会注意到这与 C 语言有点不同,因为 C 中的全局变量自动可用于函数,除非被局部定义特别覆盖。这可能会导致一些问题,因为人们可能会无意中更改全局变量。在 PHP 中,如果要在函数中使用全局变量,则必须在函数中声明它们为全局变量。
这是因为它超出了功能范围。要访问在函数外部定义的变量,您必须使用 global 关键字。
$test = 'test';
function test(){
global $test
echo $test;
}
test();
请在此处阅读有关 php 手册链接的变量范围:http: //php.net/manual/en/language.variables.scope.php
在函数内部,需要声明global $test;
函数 test 中的变量 test 才有意义。此外,在大括号 {} 中声明的任何变量都将在离开大括号范围时被取消设置,而不仅仅是在函数内。