我正在尝试使用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
有没有人知道实现我正在寻找的格式的可靠方法?
谢谢!
答案 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
/**/