PHP中实现整数均等分配的安全除法函数技术问询
PHP实现无小数的均等整数分配
PHP没有内置的直接函数来完成你描述的“无分数/小数的安全除法”(即把被除数尽可能均等分配为指定数量的整数),但可以自行编写函数实现该需求。
实现思路
- 计算基础分配值:用整数除法得到被除数除以除数的整数部分(
intdiv()函数)。 - 计算余数:被除数除以除数后剩余的数值,这个余数决定了有多少个元素需要在基础值上加1,从而实现“尽可能均等”的分配。
- 生成结果数组:先创建一个所有元素都是基础值的数组,再给前
余数个元素各加1。
代码实现
function safeDivide(int $dividend, int $divisor): array { if ($divisor <= 0) { throw new InvalidArgumentException('除数必须是正整数'); } $baseValue = intdiv($dividend, $divisor); $remainder = $dividend % $divisor; // 初始化所有元素为基础值 $result = array_fill(0, $divisor, $baseValue); // 给前$remainder个元素各加1,分配余数部分 for ($i = 0; $i < $remainder; $i++) { $result[$i]++; } return $result; }
测试验证
调用函数测试你给出的示例:
safeDivide(10, 3)→[4, 3, 3]safeDivide(11, 3)→[4, 4, 3]safeDivide(50, 2)→[25, 25]safeDivide(51, 2)→[26, 25]safeDivide(40, 5)→[8, 8, 8, 8, 8]safeDivide(40, 3)→[14, 13, 13]
边界处理
函数中加入了对除数的合法性校验,当除数为0或负数时会抛出异常,避免运行错误。
内容的提问来源于stack exchange,提问作者Giedrius
相关产品推荐
相关产品推荐

