W PHP nie ma tak, że jak napiszesz $a[3] = 1;, to pola 0,1,2 się stworzą. To działa bardziej jak ds_map() w GameMakerze, lub inaczej mówiąc jak hasztablica. To znaczy, indeksy które nadajesz, wskazują na prawdziwe indeksy tablicy, dzięki czemu można też mieć indeksy literowe.
Zatem, jeśli nie napiszesz przynajmniej $a[0] = null, to tego elementu nie będzie.
Ale...
można zrobić tak:
$tablicaBezOdpowiedzi = array(0,0,0,0,0); // to samo co array(0=>0, 1=>1, 2=>2 ...
$tablicaOdpowiedzi = array(3 => 1);
$tablicaWypelnionaBrakujacymi = array_replace($tablicaBezOdpowiedzi, $tablicaOdpowiedzi);
I odzyskasz brakujące klucze :)