来自api的简单数字格式

时间:2016-11-07 13:18:09

标签: php number-formatting

我从api中抽出一个号码。我直接调用该值时的输出是

1597188700000000

页面上的所需输出是

15, 971, 887

我正在尝试的是

function formatMoney($number, $fractional=false) { 
    if ($fractional) { 
        $number = sprintf('%.2f', $number); 
    } 
    while (true) { 
       $replaced = preg_replace('/(-?\d+)(\d\d\d)/', '$1,$2', $number); 
       if ($replaced != $number) { 
          $number = $replaced; 
       } else { 
          break; 
       } 
    } 
    return $number; 
} 

然后formatMoney($totala)($ totala是来自api的金额),我在页面上看到

1,597,188,700,000,000

感谢任何帮助

2 个答案:

答案 0 :(得分:1)

Money格式是从3位数组中从右到左。

问题是你的号码应该是多少: 1597188700000000或15971887?

您需要确定单位是什么,然后将其更改为所需的格式。如果你想从1597188700000000获得“15,971,887”。 您需要从api获取每个数字并执行:1597188700000000/100000000然后格式化。

我认为这个问题毫无意义,你没有想到你在做什么。

答案 1 :(得分:1)

以下内容将格式化您的号码,用,分隔数千,并从号码的右侧部分删除所有零。

$formattedNumber = number_format(rtrim($number, '0'), 0, ',', '.');