月数组中的数据错误

时间:2016-03-28 22:17:47

标签: php arrays

如果想从2016-01-01开始我的1月份而不是2016-01-02,我该怎么办。

https://3v4l.org/uRRfU

  function countDaysForChoosenYears(int $year):int
    {
        $att = [];
        for ($i = 1; $i <= 12; $i++) {
            $att[] = cal_days_in_month(CAL_GREGORIAN, $i, $year);
        }
        $att = array_sum($att);
        return $att;
    }

    $YearMonthDayStructure = [];

    $Date = new DateTime('2016-01-01');


    for ($i = 1; $i <= countDaysForChoosenYears(2016); $i++) {

        $monthName = $Date->format('F');
        $yearNumber = $Date->format('Y');

        $YearMonthDayStructure[$yearNumber][$monthName][$Date->format('d')] = $Date->add(new DateInterval('P1D'))->format('Y-m-d');

    }

    print_r($YearMonthDayStructure);

1 个答案:

答案 0 :(得分:1)

第一次进入循环时,您将P1D添加到日期中。因此,您的第一个日期最终为1月2日,因为您使用$ Date-&gt; add将P1D添加到该行的1月1日。它不像$ x ++,在使用变量后会发生'++'。它执行添加,然后将添加的P1D的结果提供给$ YearMonthDayStructure值。