我有一点问题
生日被存储为MySQL数据库中的DATE。
DATE是00-00-00
现在当我选择选项时,我用for循环做了一遍:
<?php
$month_names = array("januar", "februar", "marts", "april", "maj", "juni", "juli", "august", "september", "oktober", "november", "december");
for ($i=1; $i<=12; $i++) {
echo "<option ";
if ($i == $month) {
echo "selected=\"selected\" ";
}
echo "value=\"$i\">", $month_names[$i-1], "</option>\n";
}
?>
这样可行,但给我1,2,3,4,5,6,7,8,9,10,11,12作为值。
我需要像01,02,03,04,05,06,07,08,09,10,11,12这样。
我该怎么做?
答案 0 :(得分:4)
用以下内容替换第7行:
printf("value=\"%02d\">%s</option>\n", $i, $month_names[$i-1]);
答案 1 :(得分:3)
你需要提出这样的条件:
for ($i=1; $i<=12; $i++) {
echo "<option ";
if ($i == $month) {
echo "selected=\"selected\" ";
}
if ($i < 10) {
echo "value=\"0$i\">", $month_names[$i-1], "</option>\n";
}
else{
echo "value=\"$i\">", $month_names[$i-1], "</option>\n";
}
}
答案 2 :(得分:3)
str_pad()
就是你所追求的。
您需要使用
而不是打印$i
echo str_pad($i, 2, "0", STR_PAD_LEFT);
将左侧大小的字符串填充为零,直到长度为两个字符。
答案 3 :(得分:1)
无需使用字符串格式化功能:
更改
echo "value=\"$i\">", $month_names[$i-1], "</option>\n";
到
echo "value=\"$i\">", ($month_names[$i-1] < 10 ? $month_names[$i-1] : "0" . $month_names[$i-1]), "</option>\n";
答案 4 :(得分:0)
一个简单的方法是,如果值字符串小于10,则将值字符串前置为“0”。