运算符优先级
运算符优先级指定了两个表达式绑定得有多“紧密”。例如,表达式 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。