Advent of code 2020/9
Ajax Direct

Answer

Part 1 :
Part 2 :
$nums = $input->numbers;

// ==================================================
// > PART 1
// ==================================================
function sums($nums, $start, $length) {
    $sums = [];
    for ($i = $start; $i < $start + $length; $i++) {
        for ($j = $i + 1; $j < $start + $length; $j++) {
            $sums[] = $nums[$i] + $nums[$j];
        }
    }
    return $sums;
}

for ($i = 25; $i < count($nums); $i++) {
    if (!in_array($nums[$i], sums($nums, $i - 25, 25))) break;
}

$solution_1 = $nums[$i];

// ==================================================
// > PART 2
// ==================================================
for ($i = 0; $i < count($nums); $i++) {
    $sum = $nums[$i];
    for ($j = $i + 1; $j < count($nums); $j++) {
        $sum += $nums[$j];
        if ($sum > $solution_1) break;
        if ($sum == $solution_1) break 2;
    }
}

$set = $nums->slice($i, $j - $i + 1);
$solution_2 = $set->min() + $set->max();