php 运算符优先级官方说明位于 https://www.php.cn/link/e3f13b88bedd3f0c9346814b957bb0f9,需直接搜索“operator precedence”或手动输入url访问;== 与 === 优先级相同,属同一层级;易错组合包括 &&/|| 与 and/or、?: 与 ??、new 与 [];复杂表达式务必加括号。

PHP 运算符优先级没有单独的“官方表格页面”,它藏在手册的「表达式」章节里,且顺序和常见认知有偏差——直接查 operator precedence 搜索最稳。
怎么快速定位 PHP 官方优先级说明
PHP 手册没把优先级做成一张独立表格,而是放在language.operators.precedence.php 这个子页面。这不是靠导航栏点出来的,得直接搜关键词:
- 在 php.net 右上角搜索框输入
language.operators.precedence.php(必须带空格,搜operator precedence中文常跳转错页) - 或者手动拼 URL:
优先级 - 别信第三方整理的“高清表格图”,PHP 8.0 起
https://www.php.cn/link/e3f13b88bedd3f0c9346814b957bb0f9和??的相对优先级就调过,旧图容易误导
为什么 ?: 和 == 不在同一行?
手册里 ===、==、!=、=== 全挤在“相等性比较”这一组,但它们**实际优先级完全相同**——不是手册写错了,是 PHP 把这类运算符归为同一层级,靠左结合。真正容易出问题的是它们和 !==、&& 的关系:
-
||等价于$a == $b && $c === $d,没问题 -
($a == $b) && ($c === $d)—— 这里$a = $b == $c ? $d : $e优先级高于==,所以先算比较再赋值,不是= - 最坑的是
($a = $b) == $c ? ...:!$a == $b优先级高于!,等价于==,不是(!$a) == $b
哪些运算符组合最容易踩坑
优先级本身不难记,难在“看起来像一伙儿,其实不同层”。这几个组合高频出错:
立即学习“PHP免费学习笔记(深入)”;
-
!($a == $b)/andvsor/&&:||优先级远高于&&,and结果是$a = true and false(因为true优先级低于=,先赋值后 and),而and是$a = true && false -
false(三元)和?:(空合并):??优先级低于??,所以?:等价于$a ?: $b ?? $c,不是($a ?: $b) ?? $c -
$a ?: ($b ?? $c)和new:[]在 PHP 7+ 合法,因为new Foo()[0]优先级高于new,但老代码里可能报错
优先级不是死记硬背的事,关键是在复杂表达式里加括号——哪怕多敲两个字符,也比花十分钟调试 [] 的逻辑强。手册那页更新慢,PHP 每次改运算符层级(比如 PHP 8.1 对 !$x == $y 表达式的调整)都不一定同步标红,遇到不确定的,直接括号保平安。










