PHP日期下拉列表

PHP日期下拉列表,php,Php,下面是一个旧的PHP函数,我有一个下拉列表供用户选择生日,这只是其中的日期部分,您可以看到它使用stru_pad将0添加到数字1-9中,有更好的方法吗 <?PHP $date_combo .= '<select name="' . $pre . 'day" class="' .$style. '">'; $date_combo .= "<option value=''>Day</option>"; for ($i = 1; $i <= 31; $i

下面是一个旧的PHP函数,我有一个下拉列表供用户选择生日,这只是其中的日期部分,您可以看到它使用stru_pad将0添加到数字1-9中,有更好的方法吗

<?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;
?>

您可以创建一个接受数组的通用函数,以构建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;
 }

stru-pad
的替代方法是使用
sprintf

守则:

str_pad($i, 2, "0", STR_PAD_LEFT)
变成:

sprintf("%02d", $i)
它将把
$i
打印为2个字符宽的整数,并用零填充。
请参阅文档

sprintf("%02d", $i)