Оцените код тестов

222
04 октября 2017, 10:14

Сделал тесты, без БД и файлов и ответов нету в браузере.

Попытался сделать структуру массива, приближённую к структуре БД.

Оцените пожалуйста.

Как упростить?

Задача:

Дан массив с вопросами и правильными ответами. Пользователь должен выбрать один и вариантов. Когда вопросы заканчиваются - он жмет на кнопку, страница обновляется и вместо вариантов под вопросами появляется сообщение вида: 'ваш ответ: ... верно!' или 'ваш ответ: ... неверно! Правильный ответ: ...'. Правильно отвеченные вопросы должны гореть зеленым цветом, а неправильно - красным.

В массив можно сколько угодно засунуть тестов и в сам код обработки, лезть не придётся.

$questions = [
    1 => [
        'question' => 'Сколько будет 2+2?',
        'variants' => ['2', '4', '6'],
        'answer' => '1'
    ],
    2 => [
        'question' => 'Сколько будет 5+5?',
        'variants' => ['10', '55', '25'],
        'answer' => '0'
    ],
    3 => [
        'question' => 'Зимой и летом, одним цветом?',
        'variants' => ['Крокодил', 'трава'],
        'answer' => '0'
    ]
];

if(empty($_GET['proverka'])) {
    echo '<form action="" method="get">';
    $i = 1;
    foreach($questions as $num) {
        foreach($num as $dano => $v) {
                if(gettype($v) == 'array') {
                $j = 0;
                foreach($v as $val) {
                    echo '<label>'.$val.'<input type="radio" name="'.$i.'" value="'.$j.'"></label>&nbsp;&nbsp;&nbsp;';
                    $j++;
                }
            }
            echo '<br>';
            if($dano == 'question') {
                echo $v . '<br>';
            }
        }
        $i++;
    }
    echo '<br>';
    echo '<input type="submit" name="proverka" value="Проверить">';
    echo '</form>';
}

if(!empty($_GET['proverka'])) {
    if(count($_GET)-1 < count($questions)) {
        echo 'Ответьте на все вопросы.';
    }
    else {
        $k = 1;
        foreach($questions as $num) {
            foreach($num as $dano => $v) {
                if($dano == 'answer') {
                    if($_GET[$k] == $v) {
                        echo $questions[$k]['question'] .'<br> <span style="color: green; font-weight: bold;">Ваш ответ '.$questions[$k]['variants'][$_GET[$k]].' - правильно</span><br><br>';
                    }
                    else {
                        echo $questions[$k]['question'] .'<br><span style="color: red; font-weight: bold;">Ваш ответ '.$questions[$k]['variants'][$_GET[$k]].' - неправильно, правильный ответ: '.$questions[$k]['variants'][$questions[$k]['answer']].'</span><br><br>';
                    }
                }
            }
            $k++;
        }
    }     
}
READ ALSO
SugarCrm CE 6.5: Где происходит загрузка subpanels?

SugarCrm CE 6.5: Где происходит загрузка subpanels?

Ребят есть у меня готовый код который высчитывает время загрузки того или иного кодав коде предусматривается получение названия субпанели

165
Редактирование документов Google Spreadsheets через api без использования OAuth2

Редактирование документов Google Spreadsheets через api без использования OAuth2

Всем привет! Задача заключается в том, что есть некоторый скрипт, принимающий ID документа (например, в ссылке https://docsgoogle

301
php find exact match and delete

php find exact match and delete

Есть код который ищет число в файле, и удаляет его если оно присутствует, а если нет то ничего не делает:

199
Переход по кнопке Submit

Переход по кнопке Submit

Есть <input type="submit" name="button" value="РЕГИСТРАЦИЯ">, после нажатия происходят действия на сервере(запись в бд) и после этого должно переходить на другую...

196