【问题标题】:0's Not being Stripped from the front of a numeric value0 不会从数值的前面剥离
【发布时间】:2012-05-04 21:32:08
【问题描述】:

我正在为朋友的网站开发一个项目,该项目假设生成完全随机的电话号码,以显示在“假”审查板上。我认为最好的方法是让我分别生成每个部分。所以 3-3-4,但无论我做什么,每次前面有一个 0 时,代码都会将其切断。这是我的意思的一个例子:

http://www.shiningashes.net/Test.php

但这就是我的代码:

<?php
for ($i = 0000; $i <= 9999; $i++) {
echo $i;
echo "<br>";
}
?>

如何让 0 停止被裁剪,以便显示 0? 0001、0021、0123 等?

【问题讨论】:

  • 如果您的总整数大小为 4,您可以计算得到的字符串有多长,然后将差值加到 4 中。

标签: php for-loop int


【解决方案1】:

您可以使用str_pad

for ($i = 0; $i <= 9999; $i++) {
   echo str_pad($i, 4, '0', STR_PAD_LEFT);
   echo "<br>";
}

【讨论】:

    【解决方案2】:

    你可以使用 printf 来格式化你的输出:

    <?php
    for ($i = 0; $i <= 9999; $i++) {
      printf("%04d<br>\n",$i);
    }
    ?>
    

    【讨论】:

      【解决方案3】:

      如果要保留零,则需要将变量设为字符串。这意味着使用引号,并且永远不要在其上使用数字运算符。但由于你依赖于使用 ++,我建议使用以下 hack:

      <?php
      for ($i = 10000; $i <= 19999; $i++) {
          $str=substr ( $i , 0 , 4 );
          echo $i;
          echo $str;
          echo "<br>";
      }
      ?>
      

      【讨论】:

      • 这是非常冗长的。您可以使用很多内置函数,包括 printf/sprintf(参见上面的答案)、money_format 或 str_pad。
      • 我使用了上面发布的 str_pad 方法。完美地满足我的需要。谢谢大家。
      • 说它“啰嗦”是一种自以为是的说法。最干净的代码不是最短的。
      【解决方案4】:

      打印时需要将整数转换为字符串。

      <?php
      for ($i = 0; $i <= 9999; $i++) {
          printf("%04d<br />", $i);
       }
       ?>
      

      查看 printf/sprintf 的文档以获取更多信息。 亲切的问候, 斯蒂芬

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-30
        • 2015-09-15
        • 1970-01-01
        • 1970-01-01
        • 2021-08-28
        • 1970-01-01
        相关资源
        最近更新 更多