【问题标题】:How to add leading zeros and commas to a number in PHP如何在 PHP 中为数字添加前导零和逗号
【发布时间】:2012-07-16 04:07:55
【问题描述】:

我有一个变量$counter,它返回以下整数:

4

我想使用数字格式或类似的格式让我的整数以这种格式出现:

000,000,004

我该怎么做?

【问题讨论】:

标签: php integer format number-formatting


【解决方案1】:

您可以像这样一起使用sprintf()str_split()

$number = 4;
$formattedNumber = sprintf("%09d", $number);
$formattedNumber = str_split($formattedNumber, 3);
$formattedNumber = implode(",", $formattedNumber);
echo $formattedNumber;

编辑:

这是上述代码的杀手级变体,它使用了str_pad()

function formatNumber($number, $desiredLength, $separatorLength) {
    $formattedNumber = str_pad($number, $desiredLength, "0", STR_PAD_LEFT);
    while(strlen($formattedNumber) % $separatorLength){
        $formattedNumber = " " . $formattedNumber;
    }
    $formattedNumber = str_split($formattedNumber, $separatorLength);
    $formattedNumber = implode(",", $formattedNumber);
    return trim($formattedNumber);
}
echo formatNumber(         4, 9, 3); // 000,000,004   -- fixed width
echo formatNumber(4000000000, 9, 3); // 4,000,000,000 -- fixed width; overflow handled automatically
echo formatNumber(         4, 0, 3); // 4             -- no width specified
echo formatNumber(      4000, 0, 3); // 4,000         -- no width specified; comma added automatically

【讨论】:

  • 对于大于 1000000000 的数字无法正常工作。 (给出 100,000,000,0 而不是 1,000,000,000)。
  • @Artefact2:查看修改后的答案。
【解决方案2】:

您可以使用的一种方法是sprintf

sprintf('%03d', $counter);

另一个正在使用str_pad

str_pad($counter, 3, "0", STR_PAD_LEFT);

【讨论】:

    【解决方案3】:

    你可以使用str_pad函数:

    str_pad((4,2,"0",STR_PAD_LEFT);
    

    【讨论】:

      【解决方案4】:
      $string = "4";
      echo str_pad($string, 9, "0", STR_PAD_LEFT); // prints "000000004" (9-digit number)
      
      /* 
         9 = How long the returned value should be. Must be bigger than length of $string
         0 = String to add
         STR_PAD_LEFT = On which side to add zeros? Left, in the case
       */
      

      【讨论】:

        【解决方案5】:

        使用number_format

        $number = 1;
        echo number_format($number / 1000, 3, ",", "."); // 2 decimals, "," and "." as seperators
        // gives 0,001
        

        【讨论】:

          猜你喜欢
          • 2012-06-05
          • 2016-05-16
          • 1970-01-01
          • 1970-01-01
          • 2016-07-09
          • 1970-01-01
          • 2010-09-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多