IMO machst du das mit den Nachbarn immer noch viiel zu kompliziert. Wenn 0 eine tote Zelle und 1 eine lebendige Zelle ist, könntest du es auch einfach so machen:
PHP-Code:
$alive_neighbours $cells[$x-1][$y-1] + $cells[$x][$y-1] + $cells[$x+1][$y-1] + $cells[$x-1][$y] + $cells[$x+1][$y] + $cells[$x-1][$y+1] + $cells[$x][$y+1] + $cells[$x+1][$y+1];
$dead_neighbours $alive_neighbours