雷人的PHP的运算符优先级
http://cndenis.github.io
2013-10-30
PHP中的运算符优先级, 比较运算符高于位运算符, 赋值运算符高于部分逻辑运算符, 真是坑啊.
比较运算符高于位运算符, 所以
$A == $B & $C
等价于 ($A == $B) & $C
而 不是先做&
再进行比较
赋值运算 and
or
xor
高于逻辑运算, 但却低于 &&
和 ||
, 所以
<?php
$a = true and false;
var_dump($a); // 输出是 bool(true)
$b = true and false;
var_dump($b); // 输出是 bool(false)
上面那行居然是 先把 true
赋给 $a
, 然后再与后面的false
做逻辑与.
&&
和 and
居然还不等价, 雷死人了.
以后还是要习惯多加括号了.
完整的优先级列表可以参考 官方手册.
刚发现还有另外的坑, 这个优先级是有例外的: PHP运算符优先级的一个例外.
blog comments powered by Disqus