Рекомендации в руководстве. )
А вы же задав ключи даже забудьте о ереси $i = 1; name="'.$i.'[]", $i++; $k = 1; $_GET[$k], $k++;
Если вы решите еще более расширить это приложение, то возможно появится и управление. Возможно, что одни задачки будут удалены, а другие добавлены. А уникальность означает не только "не повторяющийся", но еще и "используемый единожды" - если будет удалена задачки под индексом 2, то вновь добавляемая ни в коем случае не должна получать этого индекса, только следующий за максимальным в наборе. Какие могут быть $i++?
И проверять нужно истинность входных данных, и в данном случае это можно делать просто:
if($get = array_intersect_key($_GET, $questions) AND count($get) == count($questions)) {
//данные истинны и выбрано все
//и один единственный цикл для разбора входных данных
foreach($get as $key=>$val) {
if((int)$val == $questions[$key]['answers']) {
//данные истинны и ответ правильный
}
}
}