我有一个很快的问题,我相信你们中的一些人能够指出我做错了什么
基本上,我想用(日历)创建一个表,一年中的几个月和几天,我使用php来做,我的代码做了一些奇怪的事情。
会发生什么是1月份是空的,1月的日子是在2月份
到目前为止,我的代码如下:
$months = 12;
$monthsOfTheyear = array("Januany","February","March","April","May","June","July","August","September","October","November","December");
$currentMonth = date("n");
$currentYear = date("Y");
$daysOfTheMonth = cal_days_in_month(CAL_GREGORIAN, $currentMonth, $currentYear);
for($i = 0; $i < $months; $i++){
echo " <tbody class='month'>";
echo " <tr>
<td colspan='".$daysOfTheMonth."'>
".$monthsOfTheyear[$i]."
</td>
</tr>
<tr>
";
$daysOfEachMonth = cal_days_in_month(CAL_GREGORIAN, $i, $currentYear);
for($d = 1; $d <= $daysOfEachMonth; $d++){
echo " <td>
".$d."
</td>
";
}
echo " </tr>
</tbody";
}
我显然做错了什么,但我一直盯着显示器大约一个小时试图找出它。
我很感激任何建议
感谢
答案 0 :(得分:2)
您正在将0
作为1月份的月份传递给功能cal_days_in_month
,这是不正确的。该函数预计1月份为1
。
所以将$i
更改为$i+1
:
$daysOfEachMonth = cal_days_in_month(CAL_GREGORIAN, $i+1, $currentYear);
^^
看起来您已禁用警告。如果启用它们,您将看到现有代码的以下警告:
PHP Warning: cal_days_in_month(): invalid date.
答案 1 :(得分:2)
如果这一行:
$daysOfEachMonth = cal_days_in_month(CAL_GREGORIAN, $i, $currentYear);
成为这一行:
$daysOfEachMonth = cal_days_in_month(CAL_GREGORIAN, $i + 1, $currentYear);
它解决了什么吗?
答案 2 :(得分:2)
在
$daysOfEachMonth = cal_days_in_month(CAL_GREGORIAN, $i, $currentYear);
您正在使用$ i。第一个值为0.这就是为什么你没有得到任何价值。
如果你使用
$daysOfEachMonth = cal_days_in_month(CAL_GREGORIAN, $i+1, $currentYear);
你解决了问题