unspace
(未知空间)
版主
  
百万富翁
UID 67567
精华
0
积分 48934
帖子 5039
金钱 47847 喜悦币
威望 0
人脉 1087
阅读权限 100
注册 2005-12-28 来自 吉林
状态 离线
|
为什么报错使用or die
今天有个MM问我,为什么这样用
mysql_connect('locahost','root','') or die('数据库连接失败');
这个问题我也想过很多次,忘了是哪次得到了让自己非常满意的答案,现在就把我认为的理由分享给大家
之所以 用 or 可以达到,当函数错误后,执行or后面的函数是因为:
1.逻辑运算的运算顺序是从左向右
2.or运算符的左结合性
3.or运算中,如果运算时有值为真了,则整个表达式为真,后面不需要运算
终合上面三个因素,当or左侧函数运行正常(返回非假值),则不会执行后面的函数
这里利用了or的这个特性,将die(终止并输出函数)用于此处,巧妙的实现了函数异常而报错的功能
根据上面的分析,想到
如果左侧函数就是返回假的函数,或者无返回值的函数,应该也是执行后面的函数
mysql_connect()执行错误,并不是这个函数本身执行错误了,如果是它本身执行错误是PHP的系统错误
它仅仅是返回了一个假值而已
顺便说一下在PHP中的假值都有哪些,除了这些都是真值
0 false array() null '' ""
零 假 空数组 NULL 空字符串
应该还有空对象,但不知道怎么表示
如果有疏漏,大家补充
似乎我说的还不够多,还有的地方需要再说一下。
使用die是为了终止程序,并输出错误,一般在我们学习的时候会使用这种方法,但在具体项目中很少这样用。
因为项目中即使报错,也不想使用白屏黑字去报错,都希望使用项目本身标准的报错页去报告
那么在or 的后面,很多人会使用自定义函数(方法)来报错、以及记日志等操作。
给个例子大家玩玩,这个例子也说明了print是有返回值的
<?php function test(){ echo "0"; return false; }
test() or print('1') or print('2'); ?> [ 本帖最后由 unspace 于 2007-1-25 01:07 PM 编辑 ]
|  7月1日起,北京市低保、最低工资标准、失业保险、工伤保险、基本养老金5项社会保障标准均将全部上调。其中,最低工资标准增加70元,提高到800元。 |
|