2013-09-01 75 views
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...如何將整數格式化爲兩位數字?

所以,我串連如果$i<100$i和它的作品,但也許可以通過格式化$i以兩位數字,或一些類似的,更短的方法?

+4

PHP的內置['str_pad()'](http://us1.php.net/manual/en/function.str-pad.php)等方法。 –

+0

那麼,你當然可以寫得更短。 – putvande

+3

sprintf(「%02d」,$ i); –

回答

2

通過增加另一個變量,你可以縮短到:

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

您不希望該值本身爲兩位數字,只有顯示。

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

值不是按照要求格式化的 – Salim

+0

@Salim:值**應該從不**格式化。 –

+0

你是對的,但他的要求就像 Salim

3

可以使用str_pad

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

第二個參數必須是2所需 – Salim

+0

@salim謝謝糾正 – DevZer0

2
function months() { 
    for ($i = 1; $i <= 12; $i ++) { 
    $number = sprintf("%02d", $i); 
    echo '<option value="' . $number . '">' . $number . '</option>'; 
    } 
} 
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>';  
     }  

    } 
相關問題