3v4l.org

run code in 300+ PHP versions simultaneously
<?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));

preferences:
35.98 ms | 402 KiB | 5 Q