热搜词
发表于 2009-12-21 15:21:48 | 显示全部楼层 |阅读模式
本帖最后由 灰儿 于 2009-12-21 15:44 编辑

这个问题太常规了。几乎所有接触PHP的人都会遇到过的。PHP的变量是不需要严格的显式声明的——就是你什么时候用,什么时候声明就行。 但是如果第一次使用一个没有被赋值的变量(非赋值语句),你就会遇到如下提示:

Notice: Undefined variable: email in D:\PHP5\ENOTE\ADDNOTE.PHP on line 9
Notice: Undefined variable: subject in D:\PHP5\ENOTE\ADDNOTE.PHP on line 9
Notice: Undefined variable: comment in D:\PHP5\ENOTE\ADDNOTE.PHP on line 9
........

本来php是不需要定义变量的,但是出现这种情况应该怎么办呢?

解决方法:
第一种,修改PHP.ini的设置使其不显示Notice级别的提示信息

修改php.ini 文件
将: error_reporting = E_ALL

修改为:error_reporting = E_ALL & ~E_NOTICE

如果什么错误都不想让显示,直接修改:
display_errors = Off

再重启apache服务软件就行了

如果你没有php.ini的修改权限,可在php头部加入

ini_set("error_reporting","E_ALL & ~E_NOTICE");
即可

第二种,严谨我们的程序,使其没有办法显示——推荐这种做法!


不信?那你试试看这个语句:
<?phpif($name) echo '出来,你这个警告提示!';?>

不出意外的你一定会遇到的……嘿嘿!

但是会出意外的,如果你在PHP.ini设置中屏蔽了Notice这个等级的提示那么他就不会显示任何提示了。

这种错误不会影响程序的功能的,我们不用担心,
但是为了程序的严谨性考虑,我们尽量避免任何警告、错误等明显的程序缺陷。
在使用变量的时候尽量保证这个变量已经被赋值(被定义过),但是在一些判断语句中可能这样做就失去了判断的意义。例如我们要判断变量$name是否等于“刘德华”,在判断前这个$name可能根本就没有定义。如果我们要这样写:
<?phpif($name=='刘德华') echo '帅哥';?>

在$name根本没有被定义过的情况下一定会收到一个 Notice的提示的,但是这样写:
<?phpif(isset($name)&& $name=='刘德华') echo '帅哥';?>

问题就没有了,我们只是加了一个判断条件isset($name)来验证变量$name是否被定义,如果$name已经定义了if里面的第二个条件才会被触发,这时候就不会出现Notice的提示了。

注意,函数isset():如果参数变量已经被定义,返回真(true)否则返回假(false)。这个函数一定会被经常使用的,应该烂熟于心。
全部评论0
回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|管理员之家 ( 苏ICP备2023053177号-2 )

GMT+8, 2024-9-19 09:49 , Processed in 0.199170 second(s), 33 queries .

Powered by Discuz! X3.5

Cpoyright © 2001-2024 Discuz! Team