PHP 中的数字格式(金钱)

Number formatting (Money) in PHP

我正在尝试格式化没有小数点或逗号的数字,我已经尝试了 number_format() 和 money_format() 并且似乎无法获得我需要的结果。


number_format($item->amount,2)

结果:14,995.00


money_format("%i", $item->amount)

结果:14,995.00


我想要正确格式化以下数字。

14995 需要 149.95 英镑

6795 需要 67.95 英镑

获得上述结果的最佳方法是什么?

setlocale(LC_MONETARY, 'en_GB.UTF-8'); // change if needed
echo money_format('%n', 6795 / 100);

returns

67.95 英镑

对我来说,应该可行。正如我在评论中提到的,您可能无法获得将 14995 显示为 1,499.50(除以 10)和 6795 显示为 67.95(除以 100)的代码,因此我建议相应地重构代码。

使用brick/money(免责声明:我是作者):

use Brick\Money\Money;

// Instantiating from a decimal amount

$money = Money::of('67.95', 'GBP');
echo $money->formatTo('en_GB'); // £67.95

// Instantiating from a minor amount (cents)

$money = Money::ofMinor(6795, 'GBP');
echo $money->formatTo('en_GB'); // £67.95