Я хотел бы, чтобы массив начинался с первого дня месяца и заканчивался последним.
$days = array();
$sdays = cal_days_in_month(CAL_GREGORIAN, date('m'), date('Y'));
$d = new DateTime();
$d->modify('first day of this month');
for($i; $i<$sdays; $i++)
{
$days[(int)$d->format('W')][(int)$d->format('N')] = $d->format('Y-m-d');
$d->add(new DateInterval('P1D'));
}
print_r($days);
exit();
Так что это довольно просто. Но результат выглядит так, как будто функция DateInterval не работает должным образом.
Ожидание:
Array
(
[14] => Array // week
(
[1] => 2013-04-01
[2] => 2013-04-02
[3] => 2013-04-03
...
Реальность:
Array
(
[14] => Array
(
[1] => 2013-04-01
)
)
Да, метод, как вы можете исправить это, также прост, создайте другой объект DateTime, измените его на первый день, затем создайте новый объект DateTime с первого дня, затем вы можете добавить к нему DateInterval.
Поэтому после того, как я изменил свой объект DateTime с помощью $d->modify, к нему не может быть добавлена дата. Но вопрос почему? Я хотел бы понять это.
Спасибо за ответ.
Répás
$i = 0
- единственное, что я исправил. А с$d->add(new DateInterval('P1D'))
ничего нет. FIDDLE - person BlitZ   schedule 30.04.2013