【问题标题】:PHP String and Numeric Sum [duplicate]PHP 字符串和数字总和
【发布时间】:2012-08-11 07:06:58
【问题描述】:

我有一个类似:00030000 的字符串,需要用循环递增它。

$start = "00030000";

for ($i = 1; $i < 10; $i++) {
    echo $i + $start;
}

它打印这个

30001 
30002 
30003 
30004 
//...

这可以理解,但我怎样才能得到以下结果?

00030001 
00030002 
00030003 
00030004 
//...

【问题讨论】:

  • 另外,它可能是题外话。但请注意,在 PHP 中030 不是30,而是24。这是因为 PHP 威胁以 0 开头的八进制数字(0 后跟小数点除外)。
  • 为什么echo "000", $i + $start; 不适合你?如果仔细观察,前面总是有三个零。只需注意输出的格式,而不是计算。
  • @hakra 这是起始数字填充零的一种情况。许多其他人可能没有。

标签: php for-loop echo


【解决方案1】:

使用str_pad将其填零到您需要的长度

$start = "00030000";

for ($i = 1; $i < 10; $i++) {
    $sum = $i + $start;
    echo str_pad($sum, 8, "0", STR_PAD_LEFT);
}

输出:

00030001
00030002
00030003
...

【讨论】:

    【解决方案2】:
    $start = "00030000";
    $startLen = strlen($start);
    for ($i = 1; $i < 10; $i++) {
        echo str_pad($i + $start, $startLen, '0', STR_PAD_LEFT );
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用 strpad 或 sprintf 获取此信息。

      $input = "30";
      echo str_pad($input, 4, "0", STR_PAD_LEFT);  // produces "0030"
      

      【讨论】:

        【解决方案4】:

        为了好玩:

        $start = "00030000";
        $start = '_' . $start;
        
        for ($i = 1; $i < 100; $i++) {
            echo ltrim($start++, '_');
            echo "\n";
        }
        

        请不要实际使用该代码。虽然它完美地工作并利用了 php 的documented feature,但它让大多数阅读它的人感到困惑(这使它成为糟糕的代码)。使用使用 str_pad() 的答案之一

        【讨论】:

          【解决方案5】:
          $start = "00030000";
          for ($i = 1; $i < 10; $i++) {
              echo sprintf( "%08u\n", $i + $start );
           }
          

          【讨论】:

            猜你喜欢
            • 2013-01-11
            • 2023-01-08
            • 2019-03-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-12-08
            • 1970-01-01
            • 2020-08-10
            相关资源
            最近更新 更多