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


php function no longer recognizes variable defined outside of it

我对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中,全局变量必须在一个 函数,如果它们将在该函数中使用。

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

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

请阅读有关 php 手册链接的变量范围:http://php.net/manual/en/language.variables.scope.php

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