Передача значения по умолчанию в массиве POST - PullRequest
0 голосов
/ 21 ноября 2019

У меня есть страница тестового вопроса MCQ. Вопрос и опция печатаются по циклу foreach и хранятся в формате JSON. Когда пользователь отправляет запрос, у меня есть массив POST, в котором я сохраняю кнопку Radio, щелкнувшую по определенному вопросу. У меня все это работает, но есть одна ошибка в этом, то есть, если пользователь оставит любой вопрос, массив записей будет нарушен с некоторым неизвестным значением индекса / значения. И правильный массив ответов содержит все индексы. Поэтому я не могу сравнить оба массива. Как я могу поместить 0 в качестве значения в массиве, если для этого нет индекса / ключа.

HTML FORN

<code> <form id="gi" method="post" name="mockForm" action="checkAnswer.php">

      <?php
      foreach ($json_data as $key => $value) {
          echo
          "<p><span class='que'> Question</span>&nbsp;&nbsp". $value['number']."&nbsp;&nbsp". "<br><hr class='line'>". $value['question']."<br><br>".
          "<pre>"."<input type='radio'  name='question" . $value['number']."' value='op1' required>" ." " , $value['op1']."
"."
"."<input type='radio' name='question" . $value['number']."' value='op2' required>" ." " , $value['op2']."
"."
"."<input type='radio' name='question" . $value['number']."' value='op3' required>"." "  , $value['op3']."
"."
"."<input type='radio' name='question" . $value['number']."' value='op4' required>"." " , $value['op4']."
""";}?>РАЗМЕСТИТЬнажмите

PHP CHECKANSWER.php

<?php
$contentOfJsonFile = file_get_contents("example_10.json");
$JsonData = json_decode($contentOfJsonFile, true);

$correctAnswerArray = [];

$wrongCount = 0;
$correctCount = 0;
foreach ($JsonData as $key => $value) {
    array_push($correctAnswerArray, $value['correct_answer']);
}

    $userAnswerArray = $_POST;

$breakForeach = count($userAnswerArray) - 1;
$loopRun = 0;
foreach ($userAnswerArray as $key => $answer) {


    $questionNumber = substr($key, -1);

    if ($correctAnswerArray[$questionNumber] === $answer) {
        # increment correct
        $correctCount++;
    } else if($correctAnswerArray[$questionNumber] === 0) {
        # increment wrong
        $wrongCount++;
    }
    else {
        $wrongCount++;
    }


$loopRun++;

    if($breakForeach == $loopRun ) break;
}
echo "<br>".$correctCount."<br>";
echo $wrongCount;

?>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...