XAMPP未识别变量通知

时间:2013-06-30 23:18:11

标签: php apache xampp

我继续收到此错误:

注意:未定义的变量:第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();
?>

2 个答案:

答案 0 :(得分:1)

发生这种情况,因为x()函数中的变量只有本地范围。

请参阅Variable scope at 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);

?>

答案 1 :(得分:0)

您可以通过在函数内部使用$ global关键字将$ var1的范围设置为全局范围来实现此目的

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

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

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