PHP中如何反转numfmt_format_currency输出的货币值与符号顺序?
解决numfmt_format_currency货币符号位置反转的问题
你遇到的这个问题其实是NumberFormatter对象的配置导致的,不用纠结numfmt_format_currency的参数顺序(毕竟这个函数的参数要求是固定的),调整Formatter的设置就能轻松搞定4$转$4的需求,下面给你两种实用方案:
方法1:修改现有Formatter的货币符号位置属性
如果你的$currencyFormatter已经初始化完成,可以直接通过setAttribute方法调整符号位置:
// 给已有的Formatter设置符号前置属性 $currencyFormatter->setAttribute(NumberFormatter::CURRENCY_SYMBOL_POSITION, NumberFormatter::PREPEND); // 正常调用函数,确保传入所有参数(第三个是ISO货币代码,比如USD) $result = numfmt_format_currency($currencyFormatter, $value, 'USD');
这里NumberFormatter::PREPEND就是强制让货币符号放在数值前面,而默认的APPEND就是你现在遇到的符号后置情况。
方法2:创建Formatter时直接指定自定义模式
如果是新建NumberFormatter,可以用自定义模式直接定义符号位置:
// 用PATTERN_CURRENCY样式,自定义格式把货币符号放在最前面 $currencyFormatter = new NumberFormatter('en_US', NumberFormatter::PATTERN_CURRENCY, '¤#,##0.00'); // 按要求传入所有参数调用函数 $result = numfmt_format_currency($currencyFormatter, $value, 'USD');
这里的¤是货币符号的占位符,把它放在数值格式的前面,格式化后就会输出$4这类符号前置的结果了。
需要注意的是,numfmt_format_currency的第三个参数必须是有效的ISO 4217货币代码(比如USD、EUR),不能直接传符号,这也是要求你必须传入所有参数的原因之一。调整完Formatter的配置后,就能得到你想要的输出顺序啦。
内容的提问来源于stack exchange,提问作者IleNea
相关产品推荐
相关产品推荐

