今日工作需要格式化数字显示当前商品价格,比如2335.32,需要格式化为2,335.32这样显示。我写了一个函数。总感觉这么简单的功能,但是却需要30多行代码来完成。

 

<?php
/****
* @author amos wang
* @param $number
* @return mixed
*/
function numberformat($number)
{
if(!is_numeric($number)){
return $number; // 只处理数字
}
list($integer,$decimal) = explode('.',$number);
$number_temp = ""; // 临时计数
$len = strlen($integer);
$sublen = 3; // 每隔几位数加逗号

//处理整数部分
$i=1;
while(true){
$pos = $i * $sublen;
$join = empty($number_temp) ? "" : ","; // 连接符
$number_temp = substr($integer,(0-$pos),$sublen).$join.$number_temp;

if(($pos + $sublen) > $len){
$number_temp = substr($integer,0,($len - $pos)).$join.$number_temp;
break;
}
$i++;
}
//处理小数部分
if(!empty($decimal)){
$number_temp = !empty($number_temp) ? $number_temp.".".$decimal : "0.".$decimal;
}
return $number_temp;
}
$result = numberformat(1234567.5564);
print_r($result);
?>

//结果输出1,234,567.5564