乐宁工具

PHP 运算符对照表

免费使用 超详细版 可复制

PHP 运算符完整速查表,涵盖算术、比较(== vs === 陷阱)、逻辑(&& vs and 优先级陷阱)、位运算、赋值、三元、空合并 ??、太空船 <=>、错误控制 @、执行运算符、数组运算符、字符串拼接等全部内容。

分类运算符名称示例代码结果说明 / 注意事项
算术运算符
+加法1 + 2 // 3字符串拼接用 . 不是 +
-减法5 - 3 // 2
*乘法3 * 4 // 12
/除法10 / 3 // 3.333...PHP 除法始终返回 float;整数除用 intdiv()
%取模10 % 3 // 1结果符号与被除数相同;浮点取模用 fmod()
**幂运算2 ** 10 // 1024PHP 5.6+ 引入,等价于 pow()
++自增$a=5; $a++; // 6前缀先加后用,后缀先用后加
--自减$a=5; $a--; // 4
比较运算符
==松散等于5 == "5" // true会类型转换;是 PHP 最大陷阱来源
===严格等于5 === "5" // false类型和值都相同时才为 true;推荐始终使用
!=松散不等于5 != "3" // true
!==严格不等于5 !== "5" // true
<小于3 < 5 // true
>大于5 > 3 // true
<=小于等于3 <= 5 // true
>=大于等于5 >= 5 // true
<=>太空船(三路比较)5 <=> 3 // 1PHP 7+;返回 -1/0/1;可链式比较
逻辑运算符
&&逻辑与(短路)true && false // false与 and 优先级不同
||逻辑或(短路)true || false // true与 or 优先级不同
!逻辑非!true // false
and逻辑与(低优先级)true and false // false优先级低于 =,注意赋值陷阱
or逻辑或(低优先级)false or true // true$a = false or true; // $a=false(陷阱)
xor逻辑异或true xor false // true两操作数不同为 true;极少使用
位运算符
&按位与5 & 3 // 1字符串也可按字节位运算
|按位或5 | 3 // 7
^按位异或5 ^ 3 // 6字符串异或按字节;可用于简单加密
~按位取反~5 // -6
<<左移5 << 1 // 10左移 n 位 = 乘以 2^n
>>右移-8 >> 1 // -4PHP 5.6+ 支持负数右移(算术右移)
赋值运算符
=赋值$a = 10;PHP 中对象赋值是引用赋值(同一对象)
+=加等$a += 3; // $a=$a+3
-=减等$a -= 3;
*=乘等$a *= 3;
/=除等$a /= 3;
%=模等$a %= 3;
**=幂等$a **= 2;PHP 7.4+
&= |= ^=位运算赋值$a &= 3;
<<= >>=位移赋值$a <<= 1;
.=字符串连接等$s .= "!";PHP 特有:字符串拼接赋值
三元运算符
? :三元$age>=18?"成年":"未成年"可省略中间:?:(PHP 5.3+ 猫王运算符)
猫王运算符
?:简写三元$name = $_GET["name"] ?: "匿名";等价于 $x?$x:$y;$x 不能为 null
空合并运算符
??空合并$name = $_GET["name"] ?? "匿名";PHP 7+;仅对 null/undefined 生效;可链式 ?? ??
空合并赋值
??=空合并赋值$a ??= "默认";PHP 7.4+;仅 $a 为 null 时才赋值
错误控制运算符
@抑制错误@file_get_contents($f);抑制表达式产生的 Notice/Warning;性能开销大
执行运算符
` `反引号执行$output = `ls -la`;等价于 shell_exec();不安全,禁用 passthru 场景
字符串运算符
.字符串拼接"hello" . " " . "world"PHP 特有;不同于 JS 的 +
.=拼接赋值$s .= "!";
数组运算符
+数组合并[1,2]+[3,4] // [1,2]键名相同时保留左操作数的值
==数组相等[1,2]==[1,2] // true键和值都相同(顺序无关)
===数组恒等[1,2]===[1,2] // true键、值、类型、顺序都相同
类型运算符
instanceof实例检测$obj instanceof MyClasstrue/false检测对象是否为某类/接口实例
递增/递减陷阱
++字符串自增$a="a"; $a++; // "b"PHP 特有:字符串也能 ++(进位制)
++字符串进位$a="z"; $a++; // "aa"类似 Excel 列名进位(a→z→aa→ab)
引用赋值
=&引用赋值$b =& $a;PHP 特有引用;修改 $b 影响 $a
优先级陷阱
= vs == vs ===赋值/比较if($a=1) vs if($a==1)= 是赋值返回右值,== 才是比较
优先级(高→低)
clone new创建对象new MyClass()最高(new 优先级高)
++ -- ~ (int) @单目前缀!flag / ~$a
**幂运算2**3**2 // 512右结合
* / %乘除模$a*$b/$c
+ - .加减/拼接$a+$b / "a"."b". 拼接优先级低于 +
<< >>位移
< <= > >=比较
== != === !== <> <=>相等/太空船
&按位与
^按位异或
|按位或
&&逻辑与
||逻辑或
??空合并右结合
? :三元右结合
优先级(低→高)
= += 等赋值从右向左
优先级(最低)
and or xor逻辑(低优)比 = 还低,注意陷阱

PHP 运算符注意事项(重点避坑)

  • == 会做类型转换(0 == "0" 为 true),永远优先使用 ===
  • andor 优先级低于 =$a = false or true; 结果是 $a = false(先赋值再 or)
  • ??(PHP 7+)仅对 null 生效;?: 对一切假值(0、""、false)都生效
  • @ 错误抑制符有性能开销,且被抑制的错误仍可通过自定义处理器捕获
  • • 字符串自增是 PHP 独有特性:"z"++ → "aa",类似 Excel 列名
  • . 是字符串拼接,+ 是算术加;"5" + 2 = 7(字符串被转数字)
  • intdiv(10, 3) 做整数除法(PHP 7+),/ 始终返回 float
  • <=> 太空船运算符返回 -1/0/1,非常适合作为 usort 的比较函数
  • • 对象赋值是引用赋值(同一实例),真正克隆要用 clone

== vs ===

== 类型转换后比较;=== 类型和值都检查

?? 空合并

$a ?? $b ?? "默认" 链式取值,仅 null 时降级

@ 抑制错误

有性能开销;生产环境应配合错误处理器而非滥用

<=> 太空船

$a <=> $b 返回 -1/0/1,排序回调一行搞定