【问题标题】:XAMPP unidentified variable noticeXAMPP 未识别变量通知
【发布时间】:2013-06-30 23:18:10
【问题描述】:

我不断收到此错误:

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

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

这是我的脚本:

<?php

$var1 = "hello";

function x()
{
    echo $var1;
}

x();
?>

【问题讨论】:

标签: php apache xampp


【解决方案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);

?>

【讨论】:

    【解决方案2】:

    您可以通过将 $var1 的作用域设置为全局作用域,并在函数内部使用类似这样的 global 关键字来实现

    // error_reporting(E_ALL);
    $var1 = "hello";
    
    function x()
    {
        global $var1;
        echo $var1;
    }
    x();
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-01
      • 2015-11-07
      • 2017-03-05
      • 1970-01-01
      • 2017-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多