PHP Almost Magic Square
function almostMagicSquare(array $a): array
{
    $rowSum = $colSum = array_fill(0, 3, 0);
    $maxSum = 0;

    $a = array_chunk($a, 3);
    for ($i = 0; $i < 3; $i++) {
        for ($j = 0; $j < 3; $j++) {
            $rowSum[$i] += $a[$i][$j];
            $colSum[$i] += $a[$j][$i];
        }
    }

    foreach ($rowSum as $k => $v) {
        $maxSum = max($maxSum, $v);
        $maxSum = max($maxSum, $colSum[$k]);
    }

    for ($i = 0, $j = 0; $i < 3 && $j < 3;) {
        $diff       = min($maxSum - $rowSum[$i], $maxSum - $colSum[$j]);
        $a[$i][$j]  += $diff;
        $rowSum[$i] += $diff;
        $colSum[$j] += $diff;

        if ($rowSum[$i] === $maxSum) {
            $i++;
        }
        if ($colSum[$j] === $maxSum) {
            $j++;
        }
    }

    return array_merge([], ...$a);

}