月份数组中的数据错误


Wrong Data in Month Array

如果我想从2016-01-01开始我的一月,而不是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);

第一次进入循环时,将P1D添加到日期中。所以你的第一次约会最终是1月2日,因为你用$date->add将P1D添加到了1月1日。它不像$x++那样在使用变量后会出现"++"。它执行加法,然后将结果与添加的P1D一起提供给$YearMonthDayStructure值。