我一直收到这个错误:
注意:第7行C:\examplep\htdocs\Series\DieOrExit.php中的未定义变量:var1
尽管我的语法是正确的,$var1是一个全局变量,我在函数中调用$var1。我试图通过访问php.ini并设置error_reporting=E_ALL&E_NOTICE并重新启动Apache,但什么也没发生。有人对如何解决这个问题有什么建议吗?谢谢
这是我的脚本:
<?php
$var1 = "hello";
function x()
{
echo $var1;
}
x();
?>
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);
?>
您可以通过在函数中设置$var1的作用域为全局作用域,并使用全局关键字
// error_reporting(E_ALL);
$var1 = "hello";
function x()
{
global $var1;
echo $var1;
}
x();
如图所示,您需要将变量声明为函数内部的全局变量,然后可以在函数内部使用$val。