php numberformatter 显示零
Posted
技术标签:
【中文标题】php numberformatter 显示零【英文标题】:Php numberformatter displaying zero 【发布时间】:2017-09-30 20:05:16 【问题描述】:我正在尝试用文字显示发票中的货币。为什么 $total 值显示为零/零/零?
<td class="no-borders" colspan="2">
<table class="totals">
<tfoot>
<?php foreach( $this->get_woocommerce_totals() as $key => $total ) : ?>
<tr class="<?php echo $key; ?>">
<td class="no-borders"></td>
<th class="description"><?php echo $total['label']; ?></th>
<td class="price"><span class="totals-price"><?php echo $total['value']; ?></span></td>
<?php $f = new NumberFormatter("lv", NumberFormatter::SPELLOUT);
echo $f->format($total['value']); ?>
</tr>
<?php endforeach; ?>
【问题讨论】:
如果不为零,$total['value'] 的值是多少? 您的区域设置代码必须是“lv-LV”,并且必须存在于您的系统中。 php.net/manual/en/class.numberformatter.php @Andreas When i 结果是 20.00 欧元。 【参考方案1】:Numberformatter 需要数字而不是字符串。
20
是一个数字。 €20
是一个字符串。
$f = new NumberFormatter("en", NumberFormatter::SPELLOUT);
echo $f->format("20.00"); // twenty or divdesmit in lv
echo "\n";
echo $f->format("€20.00"); // zero or nulle in lv
echo "\n";
echo $f->format(str_replace("€", "", "€20.00")); // str_replace to remove euro sign
https://3v4l.org/eA6u9
【讨论】:
有没有办法将值转换为 int 以便忽略 € 符号? str_replace 仍然保存欧元符号,可能是因为它的货币不是字符串? 怎么可能是货币?据我所知,没有称为货币的数据类型。你有字符串、整数、浮点数、布尔等等 你能复制粘贴你使用的代码吗?带有 str_replace 的行和(如果不相同)带有 numberformatter 回声的行。也只是为了确定你能var_dump($total['value']);
并将输出复制给我吗?它应该说明“值”是什么数据类型。 @卡拉
var_dumb 以字符串 (118) "€20.00" 的形式出现。我基本上是在尝试为货币添加拼写形式(wordpress 插件 woocomerce)。 @Andreas 第一个文件的代码:3v4l.org/Lhf8G以上是关于php numberformatter 显示零的主要内容,如果未能解决你的问题,请参考以下文章
PHP 'NumberFormatter' 'SPELLOUT' 没有提供所需的英文格式