首页 > 解决方案 > 将 nr 拆分为 10s 100s 1000s

问题描述

嗨,我想使用 intdiv 将一个数字拆分为一个数组,目标是将这样的数字 1234567890 变成

Array
    (
        [a] => 123456
        [b] => 78
        [c] => 90
    )

$nr = 1234567890;
$nrSplit = array('a'=>10000,'b'=>100,'c'=>1);
        
$res = array();        
foreach ($nrSplit as $key=>$curr)
{
    $nr =  intdiv($nr, $curr);
    $res [$key]= $nr;
    
}

但这就是我得到的结果:

Array
(
    [a] => 123456
    [b] => 1234
    [c] => 1234
)

标签: phpinteger

解决方案


用于foreach迭代而不是使用/&%

$res = array(); 
foreach($nrSplit as $div){
  $nr = isset($previous) ? $previous : $nr;
  $res[] = (int) ($nr / $div);// $res[] = intdiv($nr, $div);
  $previous = $nr%$div;
}
print_r($res); 

现场示例:- https://3v4l.org/Sq9iB


推荐阅读