PHP使用intdiv函数拆分数字为指定数组时结果不符合预期如何解决
问题原因
- 循环内直接修改了原始数值
$nr,且每次仅保留除法得到的商作为新的$nr,第一次运算后$nr就被替换为高位值123456,后续所有运算都基于这个错误值计算,自然得不到正确结果。 - 拆分逻辑缺少取余步骤:提取完当前段的高位值后,需要对当前除数取余,得到剩下的低位数值供下一段拆分使用。
修正代码
$nr = 1234567890; $nrSplit = array('a'=>10000,'b'=>100,'c'=>1); $res = array(); $tempNr = $nr; // 用临时变量存储待拆分值,避免修改原始数值 foreach ($nrSplit as $key=>$curr) { $res[$key] = intdiv($tempNr, $curr); $tempNr = $tempNr % $curr; // 取余得到剩余低位,用于后续拆分 }
运行上述代码得到的输出就符合预期:
Array ( [a] => 123456 [b] => 78 [c] => 90 )
内容的提问来源于stack exchange,提问作者fuwa07
相关产品推荐
相关产品推荐

