[英]Passing a default value in POST array
我有一個 MCQ 測試問題頁面。 問題和選項由 foreach 循環打印,並以 JSON 格式存儲。 當用戶提交時,我有一個 POST 數組,我在其中存儲為特定問題單擊的單選按鈕。 我已經完成了所有工作,但其中有一個錯誤,即如果用戶留下任何問題,post 數組會因一些未知的索引/值值而受到干擾。 並且正確答案數組中包含所有索引。 所以我無法比較 arrays。 如果沒有索引/鍵,我如何將 0 作為數組中的值放置。
HTML FORN
<form id="gi" method="post" name="mockForm" action="checkAnswer.php">
<?php
foreach ($json_data as $key => $value) {
echo
"<p><span class='que'> Question</span>  ". $value['number']."  ". "<br><hr class='line'>". $value['question']."<br><br>".
"<pre>"."<input type='radio' name='question" . $value['number']."' value='op1' required>" ." " , $value['op1']."</pre>".
"<pre>"."<input type='radio' name='question" . $value['number']."' value='op2' required>" ." " , $value['op2']."</pre>".
"<pre>"."<input type='radio' name='question" . $value['number']."' value='op3' required>"." " , $value['op3']."</pre>".
"<pre>"."<input type='radio' name='question" . $value['number']."' value='op4' required>"." " , $value['op4']."</pre>"
"</p>";
}
?>
<input class="submitBtn" type="submit" name="btnsubmit" value="SUBMIT">
<button onclick="hit(); handleClick();">click</button>
</form>
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;
?>
嘆息...請嘗試從中學習一些東西。
<form id="gi" method="post" action="checkAnswer.php">
<?php foreach ($json_data as $value): ?>
<p>
<span class="que">Question</span>
<?php echo $value["number"]; ?>
</p>
<hr class="line">
<?php
for ($i = 1, $i <= 4; $i++) {
echo sprintf('<input type="radio" name="question[%d] value="%s" required> %s',
$value["number"],
$value["op{$i}"],
$value["op{$i}"]);
}
?>
<?php endforeach; ?>
<?php
// FIXME Database
$answerKey = json_decode(file_get_contents("example_10.json"), true);
$score = 0;
foreach ($_POST as $i => $answer) {
if (isset($answerKey[$i]) && $answerKey[$i] == $answer) {
// increment correct
$score++;
}
}
echo "<br>{$score}<br>";
echo count($answerKey) - $score;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.