【问题标题】:PHP add thousand separators to number and keep leading zerosPHP在数字中添加千位分隔符并保持前导零
【发布时间】:2013-10-14 13:51:27
【问题描述】:

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

如果当前计算的数字长度小于 6 位,我最初的尝试是使用 str_pad 添加前导零。然后添加我使用 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

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

谢谢!

【问题讨论】:

  • 先使用number_format,然后使用str_pad?
  • 你真的需要number_format 吗?
  • str_pad 输入必须是字符串,而不是整数。
  • 我不需要数字格式,但我需要那个逗号! :)
  • @manolo - 如果 str_pad() 输入不是字符串,PHP 会将其转换为字符串

标签: php numbers number-formatting


【解决方案1】:

我想到了这个简单的技巧:

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" 

【讨论】:

  • 差不多了。它可以按预期工作,直到输入 6 位数字,但如果使用 6 位数字,它会在数字的开头添加另一个逗号和零。
  • 我的想法是长度总是小于你的数字。现在很容易修复:p
  • 谢谢!现在来解决这个问题!
【解决方案2】:

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

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

【讨论】:

  • 我有,但 number_format 删除了逗号。我需要逗号和前导零,所以数字将输出为 000,500
【解决方案3】:

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

<?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

【讨论】:

    【解决方案4】:

    一个带有 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
    /**/
    

    【讨论】:

      猜你喜欢
      • 2012-10-21
      • 2013-09-02
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 2021-04-19
      • 2013-09-25
      • 1970-01-01
      相关资源
      最近更新 更多