PHP将数千个分隔符添加到数字并保持前导零

时间:2013-10-14 13:51:28

标签: php numbers number-formatting

我正在尝试使用PHP将数千个分隔符添加到数字中,同时保持前导零(这是应用程序设计的一部分,领先的0保留,以便人们可以看到数字朝着集合增长目标 - 一个6位数字。)

我最初的尝试是使用str_pad添加前导零,如果计算的当前数字小于6个数字长。然后添加逗号我使用number_format。显而易见的问题是number_format删除了前导0。

$num = 550;
$num_padded = str_pad($num, 6, '0', STR_PAD_LEFT);
echo number_format($num_padded);  

因此返回550而不是000,550

有没有人知道实现我正在寻找的格式的可靠方法?

谢谢!

4 个答案:

答案 0 :(得分:3)

我想到了这个简单的伎俩:

function padAndFormat($number, $length)
{
   if(strlen($number)>=$length)
   {
      return number_format($number);
   }
   $number = number_format('1'.str_pad($number, $length-1, '0', STR_PAD_LEFT));
   $number[0] = '0';
   return $number;
}

//var_dump(padAndFormat('517', 6)); //string(7) "000,517" 

答案 1 :(得分:0)

您是否尝试过使用sprintf?例如

echo sprintf('%06d', 550);

答案 2 :(得分:0)

  

我不需要数字格式,但我需要逗号! :)

<?php
$zeroes=0;
$num = 550;
$num_padded = str_pad($zeroes, 3, '0', STR_PAD_LEFT);
$num_padded = str_pad($num_padded,strlen($num_padded)+strlen($zeroes), ',', STR_PAD_RIGHT);
$num_padded = str_pad($num_padded,strlen($num_padded)+strlen($num), $num, STR_PAD_RIGHT);
echo $num_padded;

输出:

000,550

答案 3 :(得分:0)

使用PHP字符串操作的一个Liner。适用于任意位数:

function pad($number, $min_digits){
    return strrev(implode(",",str_split(str_pad(strrev($number), $min_digits, "0", STR_PAD_RIGHT),3)));
}

/* Output for 9 digits
0,000,001
0,000,012
0,000,123
0,001,234
0,012,345
0,123,456
1,234,567
12,345,678
123,456,789
/**/