下面是一个旧的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;
?>
答案 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);