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));
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