Php 来自api的简单数字格式

Php 来自api的简单数字格式,php,number-formatting,Php,Number Formatting,我从api中提取一个数字。直接调用该值时的输出是 1597188700000000 页面上所需的输出为 15, 971, 887 我想做的是 function formatMoney($number, $fractional=false) { if ($fractional) { $number = sprintf('%.2f', $number); } while (true) { $replaced = preg_repla

我从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

感谢您提供的任何帮助

货币格式为从右到左的3位数分组

问题是你的号码应该是多少: 159718870000000还是15971887

您需要确定单位是什么,然后将其更改为所需格式。如果你想要159718870000000的“15971887”。 您需要从api获取每个数字并执行以下操作:159718870000000/100000000,然后对其进行格式化


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

下面将格式化你的数字,用一个
分隔千,并从数字的右边去掉所有零

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

您将向该功能提交什么输入?那么什么是
$number
$fractive
呢?没有。。我从php.net手册中获得了这一点。这一点:调用该函数时必须指定一个参数,无论该函数来自何处。我自己尝试过,该函数对我来说很好。实际上,当我喜欢
formatMoney($totala/100000000,true)时,这一点就起作用了是,但159718870000000!=15971887如果你去商店,价格是1000美元,那么不是1美元。你必须知道什么是单位。如果您的数字需要设置在16个位置(我猜这是一个问题):159718870000000您应该这样保存:00000000 1597188。当您的号码为000000 159718800时,它将有效,因此159718800。如果您有权访问源数据-您可以尝试保存值1。它应该保存00000000000001,而不是1000000000000。我无法控制从api接收到的内容。我只知道我需要在
15971887
页上显示收到的编号,即
159718870000000
,即精确除以100000000,然后您可以用其他记录验证该值,它也应该除以100000000吗?当你的答案是“是”时:你应该每次都把它分开。如果不是:你没有机会猜出你的号码。可能的解决方案是更改数字保存到源数据库的方式,或者重新验证API连接器,并检查其格式是否正确。为什么OP“尝试此操作”?一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了未来的SO访客。这是行不通的。它为number\u format()返回了错误的参数计数。
。编辑前的第一行是有效的。编辑了答案。我喜欢这种方法(即使我不确定是否正确),因为只有一行,我可以删除该函数。谢谢