文章来源:http://www.imtr.cn/html/n188.html
我原来以为PHP中的and和&&是一样的, 只是写法上为了可读性和美观, 事实上我错了。
PHP中的逻辑“与”运算有两种形式:and 和 &&,同样“或”运算也有 or 和 || 两种形式。
如果是单独两个表达式参加的运算,两种形式的结果完全相同,例如 $a and $b和$a && $b没有任何区别。
同样的$a or $b和$a || $b也完全一样。
但两种形式的逻辑运算符优先级不同,这四个符号的优先允许从高到低是:&&、||、and、or。
举例:
$a || $b and $c || $d //相当于 ($a || $b) and ($c || $d)
在先贴一张PHP文档中的一张图例
通过上面的图例很容易看出来,一些运算符虽然作用一致,但是其优先级不同,而这需要严格的注意,不能有丝毫马虎。
以逻辑运算符 && 、AND 、|| 、OR为例, 他们在一定的条件下,取得的结果一致,但不同的使用方法,可能会对你的程序开发造成困扰:
1. 以 OR 为例:
$a = 3 or 1; var_dump($a);
输出:int(3)
2. 以 || 为例:
$a = 3 || 1; var_dump($a);
输出:bool(true)
3. 若将例1 中 逻辑运算操作以 小括号 括起,则会出现例2 同样的结果,示例如下:
$a = (3 OR 1); var_dump($a);
输出: bool(true)
上面的例子应该是运算符差异性的代表性的例子了。这点东西虽小,但还是应该注意,除非有特别的需求。
原文地址:http://www.imtr.cn/html/n188.html