Потому что условие
$a != count($games_list)
всегда будет выполняться, т. к. на первой итерации цикла после
unset($games_list[$a])
в массиве ничего не останется и
count($games_list)
будет давать 0.
Перепишите код вот так:
for ($a = 0, $count = count($games_list); $a != $count; $a++) {
if (isset($games_list[$a]['status'])) unset($games_list[$a]);
}
Или так:
foreach ($games_list as $a => $game) {
if (isset($game['status'])) unset($games_list[$a]);
}
Или даже так:
$games_list = array_filter($games_list, function ($game) {
return !isset($game['status']);
});