<?php
function rangeOfMonths($prior, $ahead, $baseYear = null, $baseMonth = null) {
$baseYear = $baseYear ?: date('Y');
$baseMonth = $baseMonth ?: date('m');
$rangeStart = new DateTime($baseYear . '-' . $baseMonth . '-01 23:59:59');
$rangeEnd = clone($rangeStart);
$rangeStart->modify("-{$prior} month");
$rangeEnd->modify("+{$ahead} month +1 day");
$period = new DatePeriod($rangeStart, new DateInterval('P1M'), $rangeEnd);
$monthsList = [];
foreach ($period as $i => $dateObject) {
$monthsList[] = [
'year' => $dateObject->format('Y'),
'nr_month' => $dateObject->format('n'),
'month_name' => $dateObject->format('M'),
'current' => $i == $prior
];
}
return $monthsList;
}
var_export(rangeOfMonths(5, 6));
- Output for 7.1.0 - 7.1.33, 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
- array (
0 =>
array (
'year' => '2022',
'nr_month' => '11',
'month_name' => 'Nov',
'current' => false,
),
1 =>
array (
'year' => '2022',
'nr_month' => '12',
'month_name' => 'Dec',
'current' => false,
),
2 =>
array (
'year' => '2023',
'nr_month' => '1',
'month_name' => 'Jan',
'current' => false,
),
3 =>
array (
'year' => '2023',
'nr_month' => '2',
'month_name' => 'Feb',
'current' => false,
),
4 =>
array (
'year' => '2023',
'nr_month' => '3',
'month_name' => 'Mar',
'current' => false,
),
5 =>
array (
'year' => '2023',
'nr_month' => '4',
'month_name' => 'Apr',
'current' => true,
),
6 =>
array (
'year' => '2023',
'nr_month' => '5',
'month_name' => 'May',
'current' => false,
),
7 =>
array (
'year' => '2023',
'nr_month' => '6',
'month_name' => 'Jun',
'current' => false,
),
8 =>
array (
'year' => '2023',
'nr_month' => '7',
'month_name' => 'Jul',
'current' => false,
),
9 =>
array (
'year' => '2023',
'nr_month' => '8',
'month_name' => 'Aug',
'current' => false,
),
10 =>
array (
'year' => '2023',
'nr_month' => '9',
'month_name' => 'Sep',
'current' => false,
),
11 =>
array (
'year' => '2023',
'nr_month' => '10',
'month_name' => 'Oct',
'current' => false,
),
)
preferences:
217.41 ms | 406 KiB | 225 Q