是否有相当于 JavaScript 函数 toLocaleString() 的 PHP 函数

Posted

技术标签:

【中文标题】是否有相当于 JavaScript 函数 toLocaleString() 的 PHP 函数【英文标题】:Is there a PHP function equivalent to JavaScript function toLocaleString() 【发布时间】:2018-02-25 07:36:01 【问题描述】:

我在寻找一个预建的数字格式化函数,偶然发现了这个 JS 函数toLocaleString()。这个函数正是我想要它做的。

例如,我有一个想要格式化的数字,比如说1234567890.123。我希望将此号码格式化为1,23,45,67,890.1231,234,567,890.123

使用 JS 函数,我这样做并得到了所需的输出

var number = 1234567890.123;
number.toLocaleString('hi-IN'); //1,23,45,67,890.123
number.toLocaleString('en'); //1,234,567,890.123

但是,我想知道是否有使用 php 的内置方法。

注意:money_format() 不是我想要的,我只是想 知道PHP中是否也存在这样的功能。如果没有,没问题, 我必须编写一个自定义函数。

【问题讨论】:

检查Internationalization Functions,可能是您可能需要的任何类,例如NumberFormatter 【参考方案1】:

PHP 确实允许Number Formatting,但没有一个函数可以与 javascript 的 toLocaleString() 完全一样。

这里提供了最好的等价物:How to display Currency in Indian Numbering Format in PHP

PHP 的 NumberFormatter 可用于格式化小数。 JavaScript 实现在浏览器客户端设置区域设置值,然后输出结果。

PHP 有类似的方法来设置语言环境值,但在服务器上执行。这可能会导致意想不到的后果。

"警告:语言环境信息是按进程维护的,而不是按线程维护的。如果您在 Windows 上的 IIS、HHVM 或 Apache 等多线程服务器 API 上运行 PHP,您可能会遇到突然的变化脚本运行时的语言环境设置,尽管脚本本身从未调用 setlocale()。这是由于其他脚本同时在同一进程的不同线程中运行,使用 setlocale() 更改了进程范围的语言环境。来源:http://php.net/manual/en/function.setlocale.php

【讨论】:

嗨,迈克,感谢您的回复。在发表这篇文章之前,我已经检查了货币问题。它确实在某种程度上产生了所需的输出,但不完全是我想要的。我只是想知道是否有任何函数可以完全执行 toLocaleString() 的功能。好像没有。谢谢。【参考方案2】:

使用

$x = 45604586;
number_format($x);

输出:45,604,586

【讨论】:

这样一个简单的解决方案。谢谢分享。【参考方案3】:

按照this answer 中关于The NumberFormatter class 的链接,我能够在JavaScript 中完成与toLocaleString() 完全相同的操作:

$locale = 'en';
$currency = 'EUR';
$price = 45604586;
$fmt = new NumberFormatter($locale, NumberFormatter::CURRENCY);
$formattedPrice = $fmt->formatCurrency($price, $currency);
echo $formattedPrice;

打印出来:

€45,604,586.00

【讨论】:

以上是关于是否有相当于 JavaScript 函数 toLocaleString() 的 PHP 函数的主要内容,如果未能解决你的问题,请参考以下文章

javascript中是不是有相当于“新数组(数字)”的PHP?

是否有相当于独立JavaScript文件的django模板注释?

是否有相当于背景大小的img(javascript):封面?

如何使用匹配重新排列 JavaScript 数组?

是否有相当于 ios 的自动布局约束概念的 javascript 或 Web 开发库?

[javascript]js原型链以及原型链继承