/= 是除法赋值运算符,等价于 $a = $a / $b,核心区别在于直接修改左变量而非生成新值;它仍返回浮点数、不改变类型行为、除零时同样报错,且隐式类型转换(int→float)易引发后续类型错误。

/= 是 PHP 中的「除法赋值运算符」,作用是将左侧变量的当前值除以右侧表达式的结果,并把商重新赋给左侧变量。它不是特殊语法糖,而是 / 和 = 的组合写法,等价于 $a = $a / $b。
它和普通除法 / 有什么区别?
核心区别只在「是否复用左值」:单独用 / 不改变原变量,/= 直接修改原变量。
-
$x = 10; $y = 3; $z = $x / $y;→$x仍是10,$z是3.333... -
$x = 10; $x /= 3;→$x被覆盖为3.333...,原值丢失
语义上更紧凑,但不会提升性能或改变类型行为——该触发警告还是触发警告,该截断还是截断。
除数为 0 时会发生什么?
和直接用 / 完全一致:/= 遇到除数为 0 会抛出 Division by zero 警告(PHP 8+ 默认为 DivisionByZeroError 异常)。
-
$a = 5; $a /= 0;→ 立即中断执行(若未捕获异常) - 没有隐式兜底逻辑,不返回
INF或NaN(除非被除数本身是浮点且为 0.0) - 务必在使用前校验除数,例如:
if ($divisor != 0) { $a /= $divisor; }
整数除法 vs 浮点结果的陷阱
PHP 不区分整除和浮点除,/= 总是返回浮点数(即使两边都是整数),但结果可能被后续操作意外截断。
-
$n = 7; $n /= 2;→$n是float(3.5),不是int(3) - 如果之后用
++$n或传入要求整数的函数(如array_slice($arr, 0, $n)),可能因类型不符报错或行为异常 - 需要整数结果时,应显式转换:
$n = (int) round($n / $divisor);或用intdiv()(PHP 7.0+)
真正容易被忽略的是类型隐式变化——/= 后变量类型从 int 变成 float,而这个变化不会报错、不会提示,只在后续比较(比如用 ===)或函数调用时突然暴露问题。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











