如何正确设置循环以显示所有信息

时间:2013-01-13 22:30:09

标签: php html

尝试在每个问题的表格中显示所有不正确的答案,但由于某些奇怪的原因,我在其中一行中收到空答案。现在这只发生在问题2中,问题2是唯一有多个正确答案的问题所以我相信我遇到的问题是我没有正确设置$row_count但我的问题是如何正确设置能够显示D的遗漏答案吗?这个问题的PHP小提琴是http://phpfiddle.org/main/code/get-rps

下面的代码设置了包含多个正确答案的问题的错误答案的行数,如下所示:

`

 <?php
        //remaining incorrect answers in separate row (if any) follows here
    if($row_count < $q_row_span - 1) 
    {
        for($i=($row_count + 1); $i<$q_row_span; $i++) { ?>     
            <tr>
            <td class="answertd"><?php echo$inc_ans[$i];?>
            <input type="hidden" id="hiddenincorrect" name="incorrect[]" value="<?php echo$inc_ans[$i];?>">
            </td>

            <td class="answermarkstd">
            <input class="individualMarks q<?php echo$questionNo?>_mark"  q_group="1" name="answerMarks[]" type="text" data-type="qmark" data-qnum="<?php echo$questionNo?>" onkeypress="return isNumberKey(event)" maxlength="3" />
            </td>
            </tr>
    <?php
        }`

1 个答案:

答案 0 :(得分:0)

错误是由于您使用for()在$ques_ans上迭代的数组在键中存在间隙这一事实引起的。

var_dump($ques_ans)告诉我们:

array(3) {
  ... skipped for brevity
  [2]=>
  array(2) {
    [0]=>
    string(1) "B"
    [2]=>
    string(1) "D"
  }
  ... skipped for brevity
}

[1]没有元素。这是因为你在第49行使用的函数array_intersect保留了密钥。

为了快速修复您的代码以使其正常运行,我在第51行添加了array_values()

$ques_ans[$questionNo] = array_values($q_incorrect_ans);    //store the array of incorrect ans against the ques no as key

虽然它可能对您的应用逻辑毫无意义。我只是没有潜入它。所以检查一下。