因此,可以說下面是每個問題的正確和不正確的答案:如何通過組答案循環一次,並且只顯示不正確的答案
Question Number: 1 Correct Answer(s) B Incorrect Answers A C D
Question Number: 2 Correct Answer(s) A C Incorrect Answers B D
Question Number: 3 Correct Answer(s) D Incorrect Answers A B C
問題是我retreiving一個不正確的答案的方式問題有多個答案(多個正確答案)。在問題只有一個正確答案的情況下檢索不正確的答案沒有任何問題,只是多個正確的答案。
下面顯示的顯示不正確的答案,目前的方式,它應該看起來像這樣(我的色彩以下編碼,所以你可以看到那裏的問題):
如果有多個正確在一個問題中的回答,它似乎就像它在這個問題中所做的那樣,它只是遍歷所有的答案,刪除一個正確的答案,並顯示其餘的答案,然後它遍歷所有的答案,並刪除另一個正確的答案和顯示當前答案的其餘部分。
所以它承認A和C是正確答案,因爲它從第一組會顯示在問題2不正確的答案的去除A
和從第二組不正確的答案的問題2.刪除C
但是就像我說這是不正確顯示,它應該在每個問題的每一行顯示一個不正確的答案。
我的問題是如何修復顯示以匹配應該看起來像什麼?
當前輸出的代碼是這樣的:
<table border='1' id='penaltytbl'>
<thead>
<tr>
<th class='questionth'>Question No.</th>
<th class='answerth'>Incorrect Answer</th></tr>
</thead>
<tbody>
<?php
$row_span = array_count_values($searchQuestionNo);
$q_counter = 1;// counter for $row_span
$i = key($row_span); // gets first question number
foreach ($incorrect_ans as $key => $val){
if($q_counter == 1){
$q_row_span[$i] = count($val);}
else{
$q_row_span[$i] += count($val);}
if($q_counter >= $row_span[$i]){
$q_counter = 1;
$i++;}
else{
$q_counter++; }
}
$prev_ques = '';
foreach($searchQuestionNo as $key=>$questionNo){
?>
<tr class="questiontd">
<?php
if($questionNo != $prev_ques){
?>
<td class="questionnumtd q<?php echo$questionNo?>_qnum" rowspan="<?php echo$q_row_span[$questionNo]?>">
<?php echo$questionNo?><input type="hidden" name="numQuestion" value="<?php echo$questionNo?>" />
</td>
<?php
}
foreach($incorrect_ans[$key] as $answer){ ?>
<td class="answertd"><?php echo$answer?></td>
</tr>
<?php
}
$prev_ques = $questionNo;
}
?>
</tbody>
</table>
下面的代碼顯示它是如何檢索每個問題陣列中的不正確的答案,然後將其存儲。這段代碼被上面的HTML表格上方顯示:
$specialOptionTypes = array('Yes or No' => array('Yes', 'No'),'True or False' => array('True', 'False'));
while ($stmt->fetch()) {
// Do this for each row:
if (array_key_exists($dbOptionType, $specialOptionTypes)) {
$options = $specialOptionTypes[$dbOptionType];
} else if (preg_match('/^([A-Z])-([A-Z])$/', $dbOptionType, $match)) {
$options = range($match[1], $match[2]);
} else {
// issue warning about unrecognized option type
$options = array();
}
$right = str_split($dbAnswer);
$wrong = array_diff($options, $right);
$searchQuestionNo[] = $dbQuestionNo;
$incorrect_ans[] = $wrong;
}
UPDATE:
如果後Incorrect Answer
柱有附加的柱會發生什麼情況,代碼下面弄亂的佈局:
<tbody>
<?php
foreach($ques_ans as $questionNo => $inc_ans)
{
$q_row_span = count($inc_ans);
?>
<tr class="questiontd">
<td class="questionnumtd q<?php echo $questionNo?>_qnum" rowspan="<?php echo $q_row_span ?>">
<?php echo $questionNo?><input type="hidden" name="numQuestion" value="<?php echo $questionNo?>" />
</td>
<?php
foreach ($inc_ans as $ans)
{
?>
<td class="answertd"><?php echo $ans; ?></td>
<?php
}
?>
<td class="questionnumtd q<?php echo $questionNo?>_qnum" rowspan="<?php echo $q_row_span ?>">
<?php echo $questionNo?><input type="hidden" name="numQuestion" value="<?php echo $questionNo?>" />
</td>
</tr>
<?php
}
?>
</tbody>
告訴我們在哪兒定義'$ incorrect_ans'。 –
你的$ incorrect_ans數組結構如何?像這樣? {1 => {'A','C','D'},2 => {'B','D'},3 => {'A','B','D'}? – JLRishe
@AustinBrunkhorst $ incorrect_ans在表格上方定義爲一個數組,我包含一個更新,顯示如何檢索不正確答案的代碼以及如何刪除每個問題的正確答案,然後將其存儲在數組中 – user1830984