| 优先级 | 结合方向 | 运算符 | 附加信息 |
|---|---|---|---|
| 1 | 无结合 | clone、new | clone 和 new |
| 2 | 从右向左 | ** | 算术运算符 |
| 3 | 从右向左 | ++、--、~、(int)、(float)、(string)、(array)、(object)、(bool)、@ | 类型、递增/递减、错误控制 |
| 4 | 无结合 | instanceof | 类型 |
| 5 | 从右向左 | ! | 逻辑运算符 |
| 6 | 从左向右 | *、/、% | 算术运算符 |
| 7 | 从左向右 | +、-、. | 算术运算符和字符串运算符 |
| 8 | 从左向右 | <<、>> | 位运算符 |
| 9 | 无结合 | <、<=、>、>= | 比较运算符 |
| 10 | 无结合 | ==、!=、===、!==、<>、<=> | 比较运算符 |
| 11 | 从左向右 | & | 位运算符和引用 |
| 12 | 从左向右 | ^ | 位运算符 |
| 13 | 从左向右 | | | 位运算符 |
| 14 | 从左向右 | && | 逻辑运算符 |
| 15 | 从左向右 | || | 逻辑运算符 |
| 16 | 从右向左 | ?? | null 合并运算符 |
| 17 | 从左向右 | ? : | 三元运算符 |
| 18 | 从右向左 | =、+=、-=、*=、**=、/=、.=、%=、&=、|=、^=、<<=、>>= | 赋值运算符 |
| 19 | 从左向右 | and | 逻辑运算符 |
| 20 | 从左向右 | xor | 逻辑运算符 |
| 21 | 从左向右 | or | 逻辑运算符 |
1 < 2 > 1 是一个非法语句,而 1 <= 1 == 1 则不是,因为 <= 比 == 优先级高。
<?php
$a = 3 * 4 % 5; // (3 * 4) % 5 = 2
$a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2
$a = 1;
$b = 2;
$a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5
echo ++$a + $a++;
?>
运行结果如下,在查看运行结果之前,大家可以自行计算一下,最后会输出什么?
12
在我们熟悉了 PHP 运算优先级的前提下,最好在书写运算符的时候,以小括号来标记优先级,这样可以使我们的代码可读性更强,也是一个良好的编程习惯。
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有