<?php
$month = array();
for ( $i=1; $i<13; $i++ ) {
$month = date('m', mktime(0,0,0,$i,2,2000));
$sel = ( $i == date('n') ? ' selected="selected"' : '');
$options1[] = "<option value=\"{$month}\" {$sel}>{$month}</option>";
}
$options_list1 = join("", $options1);
echo "<select name=\"month\" >{$options_list1}</select>";
for ( $j=1; $j<32; $j++ ) {
$theday = date('d', mktime(0,0,0,0,$j,2000));
$sel = ( $j == date('d') ? ' selected="selected"' : '');
$options2[] = "<option value=\"{$theday}\" {$sel}>{$theday}</option>";
}
$options_list2 = join("\r\n", $options2);
echo "<select name=\"day\" >{$options_list2}</select>";
for ( $k=1960; $k<2016; $k++ ) {
$theyear = date('Y', mktime(0,0,0,0,2,$k));
$sel1 = ( $k == date('Y') ? ' selected="selected"' : '');
$options3[] = "<option value=\"{$theyear}\" {$sel1}>{$theyear}</option>";
}
$options_list3 = join("\r\n", $options3);
echo "<select name=\"day\" >{$options_list3}</select>";
?>
它是一天,一个月和一年的下拉菜单。日和月工作正常,但一年不是,一年我的循环工作不正常,今天是2013年,它选择2012年。任何人都可以帮助我吗?
答案 0 :(得分:1)
你上一年因为你没有将正确的参数传递给mktime。正如docs state for the month parameter:
相对于上一年末的月份数。 值1到12表示一年中的正常日历月 题。 小于1的值(包括负值)引用 上一年的月份是相反的顺序,所以0是12月,-1是 11月等大于12的值参考适当的月份 在接下来的一年中。
所以改变:
$theyear = date('Y', mktime(0,0,0,0,2,$k));
到
$theyear = date('Y', mktime(0,0,0,1,2,$k));
你没事。
<强> codepad example 强>