2009-09-02 119 views
0

下面是一箇舊的PHP函數我有一個下拉列表供用戶選擇那裏出生日期,這只是它的日期日期部分,你可以看到它使用了str_pad添加到0到數字1-9,有沒有更好的方法來做到這一點?PHP日期下拉列表

<?PHP 
$date_combo .= '<select name="' . $pre . 'day" class="' .$style. '">'; 
$date_combo .= "<option value=''>Day</option>"; 
for ($i = 1; $i <= 31; $i++) { 
    $date_combo .= " <option "; 
    if ($i == $selected_date_day) { 
     $date_combo .= " selected "; 
    } 
    $date_combo .= " value='" . str_pad($i, 2, "0", STR_PAD_LEFT) . "'>" . str_pad($i, 2, "0", STR_PAD_LEFT) . "</option>"; 
} 
$date_combo .= "</select> "; 

echo $date_combo; 
?> 

回答

2

str_pad另一種方法是使用sprintf
代碼:

str_pad($i, 2, "0", STR_PAD_LEFT) 

變爲:

sprintf("%02d", $i) 

它將打印$i作爲整數,它是寬和用零填充2個字符。
請參閱sprintf文檔。

+0

非常感謝 – JasonDavis 2009-09-02 18:31:32

0

您可以製作一個通用函數,該函數接受一個數組以構建一個select。

function formSelect($name, array $options, $selected) 
{ 
     $output = '<select name="' . $name . '">'; 

     foreach($options as $key => $value) 
     { 
      $output .= '<option value="' . $key . '"'; 

      if($selected == $key) { 
       $output .= ' selected="selected"'; 
      } 

      $output .= '>' . $value . '</option>'; 
     } 

     $output .= '</select>'; 

     return $output; 
} 

你可能應該逃避你的輸出和一些其他的東西,遺憾的是扔在一起。

然後你就可以建立自己的選擇陣列,並通過在看起來更漂亮打造你的選擇列表,然後只要致電:。

echo formSelect('birth[day]', $days, 1);