+ -
当前位置:首页 → 问答吧 → 发现一非常诡异的提示。。。郁闷了一晚上了

发现一非常诡异的提示。。。郁闷了一晚上了

时间:2009-01-12

来源:互联网

代码如下:
[php]
<?php
do {
    echo "循环".++$a."<br>";
}while ($a<4)
?>
[/php]

运行的时候,是这个提示:

Notice: Undefined variable: a in F:\php\index.php on line 3
循环1
循环2
循环3
循环4

这个程序按理来说,没错误啊,但总是提示我“未定义的变量”,然后我在整个语句前加上一个

[php]
<?php
$a=0;
do {
    echo "循环".++$a."<br>";
}while ($a<4)
?>

就不会有提示了。。。

不知道是不是我PHP配置的问题啊,这段程序即使不加定义变量a的声名,在大家的机器上都能通过,唯独我不能通过,但还能显示运行结果,真是郁闷的够呛,还希望高人来帮我解决啊
[/php]

作者: synw   发布时间: 2009-01-12

自己弄明白咋个意思了,错误是出现在 PHP.INI 文件的配置方面

我在 C:\WINDOWS\PHP.INI 中发现了一条语句  ;error_reporting  =  E_ALL

我把此项功能给打开了,也就是说没有最前面的分号:error_reporting  =  E_ALL

打开后,就会出现“未定义的变量Undefined variable

关闭后,就没问题了: ;error_reporting  =  E_ALL

这下再运行就没出现问题,不过因为我对 PHP 也是刚刚接触,不知道把这项功能关闭后,会不会影响其它错误的提示

作者: synw   发布时间: 2009-01-12

今日刚弄完,小弟又经高人指点,还有另一种解决办法:

我呢,是将;error_reporting  =  E_ALL前面的分号加上了,达到了预期效果(当然,在不知道是否影响其它错误正常显示的前提下)

还有另一种方法就是不用更改;error_reporting  =  E_ALL,而是直接在PHP语句的开始处加上一条语句:error_reporting(0);就把上述问题解决了。

虽说我刚接触PHP,而且对:error_reporting(0);还不是很了解,等我查完资料后,发上来,供向我一样的菜鸟参考。

在此非常感谢 PHP 群 48742277 中的 410932246 大虾,感谢所有在这个问题上帮我出主意的朋友

作者: synw   发布时间: 2009-01-12

你可以查查error_reporting()  这个函数就知道了!

作者: qloog   发布时间: 2009-01-12

表格 1. error_reporting() level constants and bit values

value constant
0  不输出错误
1  E_ERROR  
2  E_WARNING  
4  E_PARSE  
8  E_NOTICE  
16  E_CORE_ERROR  
32  E_CORE_WARNING  
64  E_COMPILE_ERROR  
128  E_COMPILE_WARNING  
256  E_USER_ERROR  
512  E_USER_WARNING  
1024  E_USER_NOTICE  
2047  E_ALL  
2048  E_STRICT  

作者: qloog   发布时间: 2009-01-12

如果语句前加上一个 @ 应该也没有错误提示信息

作者: diarywu   发布时间: 2009-01-12

研究的精神不错,就是题目出得有点故弄玄虚了...................

该结帖了

作者: goodokk   发布时间: 2009-01-13

作者: a28794708   发布时间: 2010-09-03