PHP:用于循环和生日日期

时间:2010-09-04 20:53:45

标签: php

我有一点问题

生日被存储为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这样。

我该怎么做?

5 个答案:

答案 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()就是你所追求的。

http://www.php.net/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”。