3v4l.org

run code in 300+ PHP versions simultaneously
<?php $data[2020] = array_fill_keys(range(1,12), '1,000'); $data[2021] = array_fill_keys(range(1,8), '1,500'); $data[2021][9] = null; $data[2021][10] = null; $data[2021][11] = null; $data[2021][12] = null; $thisYear = $year ?? date('Y'); $lastYear = $thisYear - 1; $thisYearRunningTotal = 0; $lastYearRunningTotal = 0; $result = []; for ($month = 1; $month <= 12; ++$month) { $thisYearMonthTotal = $data[$thisYear][$month]; // from model $thisYearRunningTotal = $thisYearMonthTotal === null ? null : (int)str_replace(',', '', $thisYearMonthTotal) + $thisYearRunningTotal; $lastYearMonthTotal = $data[$lastYear][$month]; // from model $lastYearRunningTotal = $lastYearMonthTotal === null ? null : (int)str_replace(',', '', $lastYearMonthTotal) + ($lastYearRunningTotal ?? 0); $result[] = [ 'month' => $month, 'total_now' => $thisYearRunningTotal, 'total_before' => $lastYearRunningTotal, ]; } var_export($result);

preferences:
23.27 ms | 408 KiB | 5 Q