数组值的选择数字格式
Posted
技术标签:
【中文标题】数组值的选择数字格式【英文标题】:Selectional number formatting of array values 【发布时间】:2013-01-16 16:55:17 【问题描述】:我在一个 mysql 表中有两种类型的数字(FLOAT 和 BIGINT)。
A:0.002
乙:51443234
我需要替换“。”在数字中带有“,”,我可以通过 number_format 来完成
foreach ($row as $key => $val)
if (is_numeric($val))
$row[$key] = number_format($val,'3', ',', '.');
新格式是:
答:0,002
B:51.443.234,000
但我不希望数字 B 中的尾随零,所以我尝试分别格式化 FLOAT 和 BIGINT 值:
foreach ($row as $key => $val)
if (is_numeric($val))
if (is_float($val))
$row[$key] = number_format($val,'3', ',', '.');
else
$row[$key] = number_format($val,'0', ',', '.');
但这不起作用。
我不确定问题出在哪里,是否可以在不将值转换为字符串的情况下做到这一点。
(我也不知道转换成字符串有什么缺点..)
您能展示一下正确的方法吗? 谢谢。
【问题讨论】:
【参考方案1】:php 是一种松散类型的语言,因此它不知道 FLOATS 和 BIGITS。事实上,0,002
或 51.443.234
都不是有效值。
为了进行计算,不要改变任何东西。为了显示您的数字,您可以根据需要设置它们的格式,即使它们是字符串。
1. <?php
2. $float = 2.25;
3. $bigInt = 4235234;
4.
5. $commaFloat = 2,25;
6. $commaBigInt = 4.235.234;
7. ?>
Parse error: syntax error, unexpected ',' on line 5
http://codepad.org/epIuX8MZ
【讨论】:
那么,您是否建议在代码中一一格式化每个变量? 不,仅在显示数字时。编写一个函数来根据需要格式化数字,并在每次要输出数字时调用该函数。 即<?= myNumberFormat($someValue); ?>
我有近 50 个数字变量,我必须列出它们。所以我将编写两个不同的函数(一个用于浮点数,一个用于大整数),然后在需要时使用它们。这是一个解决方案,但我仍然想知道我是否可以只用一个功能来做到这一点。谢谢。
当然可以。您可以使用函数参数显式定义数字类型。例如,function myNumberFormat($number, $format)
OR 尝试自动找出这个数字的格式,也许使用 RegEx。它应该是相对容易编写的函数。玩得开心!
感谢您的想法。我写了一个这样的函数:myNumberFormat($number, $decimal) for bigint numbers $decimal is 0, for float numbers it depends..以上是关于数组值的选择数字格式的主要内容,如果未能解决你的问题,请参考以下文章