PHP常用运算符优先级表
结合方向 | 运算符 | 描述 | 说明 |
无 | clone new | clone 和 new
|
|
其他 | [ ] | 其他
|
|
右 | ++ 、 -- 、 () 、 ~、 int 、 float 、 string 、array、object、bool、 @ | 类型和递增、递减、错误抑制 |
|
右 | ! | 逻辑运算符
|
|
左 |
| 算术运算符
|
|
左 | + - . | 算术运算符和字符串运算符
|
|
左 | << 左移 >> 右移 | 位运算符
|
|
无 | == != === !== < > A <>B 不等运算符有两种写法 | 比较运算符
|
|
左 | & 按位与 | 位运算符和引用
|
|
左 | ^ 按位异或 | 位运算符
|
|
左 | | 按位或 | 位运算符
|
|
左 | && 逻辑与 | 逻辑运算符
|
|
左 | || 逻辑或 | 逻辑运算符
|
|
左 | ? : | 三元运算符 |
|
右 | = += -= *= /= .= %= &= |= ^= <<= >>= => | 赋值运算符
|
|
左 | and (按位与) | 逻辑运算符(与) $a & $b | 将把 $a 和 $b 中都为 1 的位设为 1。 |
左 | xor (按位异或) | 逻辑运算符(异或)
|
|
左 | or (按位或) | 逻辑运算符(或)
|
|
左 | , |
|
|
运算符分类:三大类
单目运算符
++、--、!、~位运算(按位非)
双目运算符
+、 -、 *、 /、 %、 >、 <、 ==、
三目运算符
? :
容易混淆的运算符口诀:
先乘除后加减,比较逻辑跟着算,非子来了最优先!
也就是优先级:!(非) > 数学类 > 比较类 > 逻辑类
运算符考虑思想:
1、优先级,2、结合方向 3、特例 4、BUG 5、不同类型运算间的转换
未明确优先级别的运算符:
类型检查 instanceof 示例: objA instanceof A
其他说明:
运算符与操作数的各种结合情况异常复杂,特殊的案例结果不可预知,无法完全记忆。为了避免特性及BUG
的发生,书写时要求逻辑清晰,操作数配合运算符要尽量有意义。
以下的特性或bug注意避免其出现就行,以下是示意代码
<?php
$a =1 ;
$b = $a + $a +$a=2;
//4=1+1+2
// 结果$b是多少?
?>
特例中的编程思想:
在一个有歧义或多种可能运算中,优先按正常顺序尝试进行,如果不行再改变方案。
<?php
$a =1 ;
$b = &$a;
$c = ++ $a + $a ++;
// 结果$c是多少?
?>