运算符优先级
运算符优先级指定了两个表达式绑定得有多“紧密”。例如,表达式 1 + 5 *
3 的结果是 16 而不是 18 是因为乘号(“*”)的优先级比加号(“+”)高。必要时可以用括号来强制改变优先级。例如:(1 + 5) * 3 的值为 18。
下表从低到高列出了运算符的优先级。
表格 10-1. 运算符优先级
| 结合方向 | 运算符 |
|---|
| 左 | , |
| 左 | or |
| 左 | xor |
| 左 | and |
| 右 | print |
| 右 |
= += -= *= /= .= %= &= |= ^= ~= <<= >>=
|
| 左 | ? : |
| 左 | || |
| 左 | && |
| 左 | | |
| 左 | ^ |
| 左 | & |
| 无 | == != === !== |
| 无 | < <= > >= |
| 左 | << >> |
| 左 | + - . |
| 左 | * / % |
| 右 | ! ~ ++ -- (int) (float) (string) (array) (object) @ |
| 右 | [ |
| 无 | new |
注:
尽管 ! 比 = 的优先级高,PHP
仍旧允许类似如下的表达式:if (!$a = foo()),在此例中
foo() 的输出被赋给了 $a。