0
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...

所以,我连接了if0和它的工作原理,但也许可以通过格式化为两位数,或者一些类似的、更短的方法?$i$i<10$i

4

5 回答 5

5

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

echo '<option value="' . $i . '">' . sprintf('%02d', $i) . '</option>';
于 2013-09-01T11:56:10.360 回答
3

您可以使用str_pad

$str = str_pad($i, 2, "0", STR_PAD_LEFT);
于 2013-09-01T11:56:49.850 回答
2
function months() {
  for ($i = 1; $i <= 12; $i ++) {
    $number = sprintf("%02d", $i);
    echo '<option value="' . $number . '">' . $number . '</option>';
  }
}
于 2013-09-01T11:57:23.833 回答
2

像这样使用 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>';    
        }    

    }
于 2013-09-01T11:58:48.983 回答
2

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

function months(){
    for($i=1;$i<=12;$i++)
         $mo = ($i<10) ? "0".$i : $i;
         echo '<option value="'.$i.'">'.$mo.'</option>';
    }
}
于 2013-09-01T11:59:47.270 回答