PHP取余(%)结果的符号由被除数决定:10%3=1、-10%3=-1、10%-3=1、-10%-3=-1;它是取余而非模运算,需用($a%$b+$b)%$b实现非负模。

直接运行这行命令就能验证 PHP 取余(%)的符号规则:
PHP 取余符号由被除数决定
PHP 的 % 运算符结果的符号始终与被除数(左操作数)一致,和除数无关。这是它和 Python 的 %(结果同除数)的关键区别。
一行命令快速验证
在终端执行:
php -r "echo "10 % 3 = ", 10 % 3, "\n"; echo "-10 % 3 = ", -10 % 3, "\n"; echo "10 % -3 = ", 10 % -3, "\n"; echo "-10 % -3 = ", -10 % -3, "\n";"
输出为:
10 % 3 = 1
-10 % 3 = -1
10 % -3 = 1
-10 % -3 = -1
可见:结果正负只看前面那个数(10 或 -10),后面是 3 还是 -3 不影响符号。
注意:这不是模运算,是取余
-
%在 PHP 中是 取余(remainder),不是数学上的模(modulo) - 它基于
floor()除法:$a % $b == $a - floor($a / $b) * $b - 若需真正模运算(结果恒 ≥ 0),可用:
($a % $b + $b) % $b
小技巧:用 var_dump 看类型和值
想确认结果是整数且无隐式转换,可加 var_dump:
php -r "var_dump(-10 % 3);"
输出:int(-1) —— 明确告诉你类型和符号
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











