运算符优先级
前面介绍了PHP的各种运算符,若一个表达式中含有多个运算符时,这些运算符会遵循一定的先后顺序,这个顺序就称为运算符的优先级。PHP中运算符的优先级如表11所示。
表1 运算符优先级
结合方向 | 运算符 |
---|---|
无 | new |
左 | [ |
右 | ++ -- ~ (int) (float) (string) (array) (object) @ |
无 | instanceof |
右 | ! |
左 | * / % |
左 | + - . |
左 | << >> |
无 | == != === !== <> |
左 | & |
左 | ^ |
左 | | |
左 | && |
左 | || |
左 | ? : |
右 | = += -= *= /= .= %= &= |= ^= <<= >>= |
左 | and |
左 | xor |
左 | or |
左 | , |
在表1中,运算符的优先级由上至下递减,同一行的运算符具有相同的优先级,左结合方向表示同级运算符的执行顺序为从左到右,而右结合方向则表示执行顺序为从右到左。
在表达式中,使用小括号“( )”可以提升其内运算符的优先级,具体示例如下。
$num1 = 4 + 3 * 2; // 输出结果为10
$num2 = (4 + 3) * 2; // 输出结果为14
上述示例中,未加小括号的表达式“4 + 3 * 2”的执行顺序为,先进行乘法运算,再进行加法运算;而加了小括号的表达式“(4 + 3) * 2”的执行顺序为,先进行小括号内的加法运算,然后进行乘法运算。