0

我想根据所需的语言环境设置格式化数字。因此,我正在使用 PHP 手册中的示例代码:

$number = 1234.56;

// let's print the international format for the en_US locale
setlocale(LC_MONETARY, 'en_US');
echo money_format('%i', $number) . "\n";
// USD 1,234.56

而不是预期的结果,我只是得到未格式化的值“1234.56”。如果我使用不同的语言环境,例如“it_IT”而不是“en_US”,也会发生同样的情况。

为什么不格式化?

4

2 回答 2

1

因为您的环境中没有en_US本地人。用于locale -a检查它。

你必须安装它。参考这个答案

于 2018-05-08T06:11:02.140 回答
0

PHP 手册告诉该money_format( string $format , float $number )函数依赖于strfmon()C 函数。

$format您可以作为参数传递的可能选项是locale操作系统的命令可以理解的选项。如果你传递不同的东西,那么这个数字根本就没有格式化,它只是转换为字符串。这就是发生在我身上的事情。

为了列出接受的值,您可以在提示符下使用此命令:

locale -a 

根据您的安装,它可能只列出几个语言环境。为了使用更多,您可能需要安装其他语言环境。在 Debian 中,您可以这样做:

apt-get install locales
apt-get install locales-all

安装所有语言环境后,该locale -a命令会列出数百个语言环境。现在该number_format()功能按您的预期工作。

于 2018-05-08T06:11:11.937 回答