剖析:foo()和@foo()的之间的区别
考点:PHP中的运算符的错误抑制符@以及作用
答:当将其放置在一个PHP表达式之前,该表达式可能产生的任何错误信息都被忽略掉
延伸:PHP所有运算符考点
Ⅰ 运算符优先级
注意:可以使用括号来增加代码的可读性,推荐使用
Ⅱ 比较运算符
== :只考虑最后的值是否相等
=== :还要考虑左右两边类型是否一致
等值判断(FALSE的七种情况)
Ⅲ 递增/递减运算符
① 不影响布尔值
② 递减NULL值没有效果,但是递增NULL值为1
③ 递增和递减在前就先运算后返回,反之就先返回后运算
Ⅳ 逻辑运算符
① 短路作用
② ||、&&(条件布尔运算符)与or和and的优先级不同
注意:|、&(布尔运算符)运行速度低于||、&&(因为后者确定第一个表达式就能判断出结果,即短路作用)
例题:
<?php $a = 0; $b = 0; if($a = 3 > 0 || $b = 3 > 0){ // $a = true 因为||的短路作用$b = 0 $a++; //true++仍然是true $b++; // 1 echo $a . "\n"; echo $b . "\n"; }