php 中取余符号 % 两边是字符串时,会先将字符串转换为整数再进行计算。转换规则遵循 php 的类型转换机制:以数字开头的字符串提取前缀数字,非数字开头的字符串转为 0。例如 '123abc' % '45' 实际执行的是 123 % 45,结果为 33;而 'abc' % 5 则相当于 0 % 5,结果为 0。

'123abc' % '45' 的转换过程是怎样的
当操作数为以数字开头的字符串时,PHP 会解析其前缀部分作为整数值。对于 '123abc' % '45',左操作数 '123abc' 被转换为整数 123,右操作数 '45' 被转换为整数 45。最终计算 123 % 45,得到余数 33。这种转换只读取连续的数字字符,遇到非数字字符即停止。

echo '123abc' % '45'; // 输出 33 $left = '123abc'; $right = '45'; $result = $left % $right; echo $result;
'abc' % 5 的非数字字符串如何处理
当字符串不以数字开头时,PHP 将其视为无效数值并转换为整数 0。对于 'abc' % 5,左操作数 'abc' 转换为 0,右操作数 5 保持为 5。计算 0 % 5 的结果为 0。如果两个操作数都是非数字字符串,如 'abc' % 'def',则两者都转为 0,结果仍为 0。

echo 'abc' % 5; // 输出 0 echo 'def' % 'ghi'; // 输出 0 $left = 'abc'; $right = 5; $result = $left % $right; echo $result;
浮点数字符串在取余运算中如何转换
浮点数字符串会被转换为浮点数,但取余运算符要求操作数为整数类型。PHP 会将浮点数强制截断为整数。例如 '12.9' % '4.5',左操作数 '12.9' 先转为浮点数 12.9,再因取余运算需要转为整数 12;右操作数 '4.5' 转为浮点数 4.5,再转为整数 4。最终计算 12 % 4,结果为 0。注意这里不是四舍五入,而是直接截断小数部分。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











