PHP日期下拉列表

时间:2009-09-02 17:56:02

标签: php

下面是一个旧的PHP函数,我有一个下拉列表供用户选择生日,这只是它的日期部分,你可以看到它使用 str_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;
?>

2 个答案:

答案 0 :(得分:2)

str_pad的替代方法是使用sprintf 代码:

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

变为:

sprintf("%02d", $i)

它会将$i打印为2个字符宽的整数,并用零填充 请参阅sprintf文档。

答案 1 :(得分: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);