【问题标题】:How to format an integer as two digits? [duplicate]如何将整数格式化为两位数? [复制]
【发布时间】:2013-09-04 16:07:36
【问题描述】:
function months(){
    for($i=1;$i<=12;$i++)
    if($i<10)   {
    echo '<option value="'."0".$i.'">'."0".$i.'</option>';
    }
    else{
    echo '<option value="'.$i.'">'.$i.'</option>';
    }
}

这会使用01, 02, 03... 而不是1, 2, 3... 填充下拉列表

所以,我将0$i 连接起来,如果$i&lt;10 可以工作,但也许可以通过将$i 格式化为两位数,或者一些类似的、更短的方法?

【问题讨论】:

  • PHP 内置的str_pad() 等方法。
  • 嗯,你当然可以写得更短。
  • 非常感谢大家。似乎解决了。

标签: php


【解决方案1】:

您不希望值本身是两位数,而只是显示。

echo '<option value="' . $i . '">' . sprintf('%02d', $i) . '</option>';

【讨论】:

  • 值的格式不符合要求
  • @Salim:值应该永远被格式化。
  • 你是对的,但他的要求就像
  • 然后呢?我正在让他免于他以后会经历的痛苦。 “为什么08不起作用?
【解决方案2】:

你可以使用str_pad

$str = str_pad($i, 2, "0", STR_PAD_LEFT);

【讨论】:

  • 第二个参数必须是 2 要求
  • @salim 谢谢更正
【解决方案3】:

通过添加另一个变量,您可以将其缩短为:

function months(){
    for($i=1;$i<=12;$i++)
         $mo = ($i<10) ? "0".$i : $i;
         echo '<option value="'.$i.'">'.$mo.'</option>';
    }
}

【讨论】:

    【解决方案4】:
    function months() {
      for ($i = 1; $i <= 12; $i ++) {
        $number = sprintf("%02d", $i);
        echo '<option value="' . $number . '">' . $number . '</option>';
      }
    }
    

    【讨论】:

      【解决方案5】:

      像这样使用 str_pad -

         function months(){
              for($i=1;$i<=12;$i++) {
               echo '<option    value="'.str_pad($i,2,"0",STR_PAD_LEFT).'">"'.str_pad($i,2,"0",STR_PAD_LEFT).'</option>';    
              }    
      
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-25
        • 1970-01-01
        • 2011-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-12
        相关资源
        最近更新 更多