Я усложнил задание.
Теперь на один вопрос может быть несколько правильных ответов. Пользователь должен отметить один или несколько чекбоксов.
$questions = [
1 => [
'question' => 'Сколько будет 2+2?',
'variants' => ['2', '4', '6', '4.0'],
'answers' => ['1', '3']
],
2 => [
'question' => 'Сколько будет 6+6?',
'variants' => ['66', '6', '12'],
'answers' => ['2']
],
3 => [
'question' => 'Найдите несуществующие месяцы',
'variants' => ['Февраль', 'Июндр', 'Сентябрь', 'Авгурст', 'Денабрь'],
'answers' => ['1', '3', '4']
],
];
if(empty($_GET['proverka'])) {
echo '<form action="" method="get">';
$i = 1;
foreach($questions as $num) {
foreach($num as $dano => $v) {
if(gettype($v) == 'array' && $dano == 'variants') {
$j = 0;
foreach($v as $val) {
echo '<label>'.$val.'<input type="checkbox" name="'.$i.'[]" value="'.$j.'"></label> ';
$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)) {
die ('Ответьте на все вопросы.');
}
$k = 1;
foreach($questions as $num) {
foreach($num as $dano => $v) {
if($dano == 'answers') {
$rightAnswers = array_diff($_GET[$k], $questions[$k]['answers']);
$countUserAnswer = $_GET[$k];
$countAnswer = $questions[$k]['answers'];
echo '<br>';
if(count($rightAnswers) == 0 && ($countUserAnswer == $countAnswer)) {
$keyAnswer = [];
foreach($_GET[$k] as $userAnswer) {
$keyAnswer[] = $questions[$k]['variants'][$userAnswer];
}
echo $questions[$k]['question'] . '<br>';
echo 'Ваш ответ: ' ;
echo implode(', ', $keyAnswer);
echo ' и это <span style="color: green; font-weight: bold;">правильный ответ</span>.';
echo '<br><br>';
}
else {
$keyAnswer = [];
$keyTrueAnswer = [];
echo $questions[$k]['question'] . '<br>';
echo 'Ваш ответ: ' ;
foreach($_GET[$k] as $userAnswer) {
$keyAnswer[] = $questions[$k]['variants'][$userAnswer];
}
echo implode(', ', $keyAnswer);
echo ' - <span style="color: red; font-weight: bold;">это неправильно</span>.<br>';
echo 'Правильный ответ(ы): ' ;
foreach($questions[$k]['answers'] as $ans) {
$keyTrueAnswer[] = $questions[$k]['variants'][$ans];
}
echo implode(', ', $keyTrueAnswer);
echo '<br><br>';
}
}
}
$k++;
}
}