“for”循环在另一个“for”循环中

时间:2011-01-14 02:40:24

标签: php


我有一个很快的问题,我相信你们中的一些人能够指出我做错了什么 基本上,我想用(日历)创建一个表,一年中的几个月和几天,我使用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";
}

我显然做错了什么,但我一直盯着显示器大约一个小时试图找出它。
我很感激任何建议 感谢

3 个答案:

答案 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);

你解决了问题