写在前面
运算符的优先级不能不说重要,但是记忆起来还是觉得有些麻烦。每次拿不准的时候就去查找手册,也稍微显得有些麻烦,所以还是把这个收录到自己的PHP博客中,作为常规PHP资料储备吧。
运算符优先级
下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。
编号 | 结合方向 | 运算符 | 备注 |
---|---|---|---|
01 | 无 | clone new | clone 和 new |
02 | 左 | [ | array |
03 | 右 | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ | 类型和递增/递减 |
04 | 无 | instanceof | 类型 |
05 | 右 | ! | 逻辑运算符 |
06 | 左 | * / % | 算术运算符 |
07 | 左 | + - . | 算术运算符 和 字符串运算符 |
08 | 左 | << >> | 位运算符 |
09 | 无 | == != === !== <> | 比较运算符 |
10 | 左 | & | 位运算符和引用 |
11 | 左 | ^ | 位运算符 |
12 | 左 | | | 位运算符 |
13 | 左 | && | 逻辑运算符 |
14 | 左 | || | 逻辑运算符 |
15 | 左 | ?: | 三元运算符 |
16 | 右 | = += -= *= /= .= %= &= |= ^= <<= >>= => | 赋值运算符 |
17 | 左 | and | 逻辑运算符 |
18 | 左 | xor | 逻辑运算符 |
19 | 左 | or | 逻辑运算符 |
20 | 左 | , | 多处用到 |
尽管 = 比其它大多数的运算符的优先级低,PHP 仍旧允许类似如下的表达式:if (!$a = foo()),在此例中 foo() 的返回值被赋给了 $a