-1

我对php比较陌生,遇到了一个非常奇怪的问题。让我举一个非常简单的代码示例

$test = 'test';

function test(){
    echo $test;
}

test();

在上面的示例中,它过去工作得非常好,作为调用 test() 函数的结果返回“test”。但是,就在今天它开始返回错误,说变量 $test 未定义。我 100% 确信它以前工作得很好。这是php中的一些更新吗?还是我在这里做错了什么?我正在使用 wamp 并在我的本地主机上进行测试。谢谢!

4

3 回答 3

3

这是预期的行为,称为“可变范围”

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

“陷阱”之一是:

您可能会注意到这与 C 语言有点不同,因为 C 中的全局变量自动可用于函数,除非被局部定义特别覆盖。这可能会导致一些问题,因为人们可能会无意中更改全局变量。在 PHP 中,如果要在函数中使用全局变量,则必须在函数中声明它们为全局变量。

于 2012-06-23T08:51:56.810 回答
2

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

$test = 'test';

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

test();

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

于 2012-06-23T08:53:01.573 回答
1

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

于 2012-06-23T08:54:18.110 回答