формы — PHP: не могу получить месяц в нужный год

Для кода ниже я хочу иметь текущий месяц и следующие 12 месяцев с годом. Я использую петлю для этого, все работает нормально, за исключением «января». И я просто не знаю, что происходит не так.

for ($i = 0; $i <= 12; $i++) {
$months[ucfirst(strftime("%B %G", strtotime( date( 'Y-m' )." +$i months")))] = ucfirst(strftime("%B %G", strtotime( date( 'Y-m' )." +$i months")));
echo ucfirst(strftime("%B %G", strtotime( date( 'Y-m' )." +$i months")));
}

Эхо-выход:

December 2015 Januari 2015 Februari 2016 Maart 2016 April 2016 Mei 2016 Juni 2016 Juli 2016 Augustus 2016 September 2016 Oktober 2016 November 2016 December 2016

0

Решение

Вы можете просто использовать:

$date = new DateTime('first day of this month');

for ($i = 0; $i < 13; $i++) {
echo $date->format('F Y,');
$date->modify('+1 month');
}

Выход будет:

Декабрь 2015, январь 2016, февраль 2016, март 2016, апрель 2016, май 2016, июнь 2016, июль 2016, август 2016, сентябрь 2016, октябрь 2016, ноябрь 2016, декабрь 2016,

2

Другие решения

Как насчет этого?

<?php

$start = new DateTimeImmutable('first day of this month');
$interval = new DateInterval('P1M');
$period = new DatePeriod($start, $interval, 12);

foreach ($period as $date) {
echo $date->format('F Y') . PHP_EOL;
}
3