2

我不断收到此错误:

注意:未定义变量:第 7 行 C:\xampp\htdocs\Series\DieOrExit.php 中的 var1

即使我的语法是正确的, $var1 也是一个全局变量,我在我的函数中调用 $var1 。我试图通过转到 php.ini 并设置我的 error_reporting = E_ALL & ~E_NOTICE 并重新启动 Apache 来关闭通知,但没有任何反应。有没有人对如何解决这个问题有任何建议?谢谢!

这是我的脚本:

<?php

$var1 = "hello";

function x()
{
    echo $var1;
}

x();
?>
4

2 回答 2

1

发生这种情况,因为x()函数内的变量只有局部范围。

请参阅php.net 上的变量范围

有一个几乎相同的例子:

<?php 

$a = 1; /* global scope */ 

function test() 
{ 
    echo $a; /* reference to local scope variable */  
} 

test(); 
?>

带说明:

此脚本不会产生任何输出,因为 echo 语句引用了 $a 变量的本地版本,并且尚未在此范围内为其分配值。您可能会注意到这与 C 语言有点不同,因为 C 中的全局变量自动可用于函数,除非被局部定义特别覆盖。这可能会导致一些问题,因为人们可能会无意中更改全局变量。在 PHP 中,如果要在函数中使用全局变量,则必须在函数中声明它们为全局变量。


要解决此问题,您必须将变量传递给函数,如下所示:

<?php

$var1 = "hello";

function x($var2)
{
    echo $var2;
}

x($var1);

?>
于 2013-06-30T23:25:23.877 回答
0

您可以通过在函数内部使用全局关键字将 $var1 的范围设置为全局范围来做到这一点

// error_reporting(E_ALL);
$var1 = "hello";

function x()
{
    global $var1;
    echo $var1;
}
x();

您需要将变量声明为全局内部函数,如图所示,然后您可以在函数内部使用 $val。

于 2019-08-28T13:29:14.643 回答