$ _REQUEST issue未定义的偏移量

时间:2013-07-06 17:55:54

标签: php

<?php 
$ans=$_REQUEST['ans'];
$qes=$_REQUEST['qes'];
$ra=$_REQUEST['right_op'];
$count=0;
for($i=0; $i<count($ans); $i++)
{
    echo "Question".$qes[$i]"<br>";
    echo "Ans".$ans[$i]"<br>";
    echo "Right Option".$ra[$i]."<br>";
    if(isset($ans[$i]) == isset($ra[$i]))
    {
        $count++;
    }
}
?>

提交第一页时,显示

  

注意:未定义的偏移量:第9行的C:\ xampp \ htdocs \ result.php中的1

发布数据的第一页。

<?php 
$i=1;
$x=0;
$y=0;
$z=0;

do{
  ?>
            <tr>
              <td width="30"></td>
              <td width="30" height="27"><?php echo "$i";?></td>
              <td width="493"><?php echo $row_question['question']; ?>
                <input type="hidden" name="q_id[<?php// echo $y; ?>]" id="q_id" value="    <?php echo $row_question['q_id']; ?>" />
                <input type="hidden" name="qes[<?php echo $y; ?>]" id="qes" value="<?php     echo $row_question['question']; ?>" /><input name="right_op[<?php echo $z; ?>]"     type="hidden" id="right_op" value="<?php echo $row_question['right_op']; ?>" /></td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td height="59" align="right"><h3>A)</h3>
                <h3>B)</h3>
                <h3>C)</h3>
                <h3>D)</h3></td>
              <td><h3>
                <label>
                  <input type="radio" name="ans[<?php echo $x; ?>]" value="A" id="ans_0"     />
                      <font color="#FFFFFF"><?php echo $row_question['op_a']; ?></font>    </label>
                <br />
                <label>
                  <input type="radio" name="ans[<?php echo $x; ?>]" value="B" id="ans_1"     />
                  <font color="#FFFFFF"><?php echo $row_question['op_b']; ?></font>    </label>
                <br />
                <label>
                  <input type="radio" name="ans[<?php echo $x; ?>]" value="C" id="ans_2"     />
                  <font color="#FFFFFF"><?php echo $row_question['op_c']; ?></font>    </label>
                <br />
                <label>
                   <input type="radio" name="ans[<?php echo $x; ?>]" value="D" id="ans_3"     /> 
                  <font color="#FFFFFF"><?php echo $row_question['op_d']; ?></font>    </label>
                <br />
              </h3></td>
             </tr>

<tr>
  <td height="17" colspan="3"><hr /></td>
    </tr><?php
    $i++; 
    $x++;
    $y++;
        $z++;
    } while ($row_question = mysql_fetch_assoc($question)); ?>

此代码有什么问题。请详细告诉我。
谢谢。

3 个答案:

答案 0 :(得分:2)

在访问

之前始终使用isset()
if (isset($ra[$i])  && isset($ans[$i]) && isset($qes[$i])){
  // your code
}

array_key_exists($i, $ra);

答案 1 :(得分:0)

看起来你希望所有数组都是相同的大小,而$ra的情况与其他数组相比并非如此,因此

 echo "Right Option".$ra[$i]."<br>";

引起通知。您似乎需要修正$ra尺寸。

答案 2 :(得分:0)

$ra数组中的成员数量与$ans没有那么多,因此当您点击循环的第二次迭代时,$ra[1]中没有任何内容可以显示。您需要弄清楚为什么$ra$ans的长度不同 - 如果没有关于您正在做什么的更多信息,我们很难知道。

正如@Nikola指出的那样,在尝试使用isset()输出之前,您应该始终检查以确保您正在访问的索引中有某些内容。当$ra[1]中存在某些内容时,$ans[1]中是否存在某些内容是否有效是唯一可以回答的内容。

从您的代码中推断出很多内容,看起来$ ra旨在表明正确的答案。在这种情况下,只有一个,所以你应该使用$ra[0]而不是$ra[$i],这将始终显示$ ra数组中的第一个元素。当然,我可能会误解你的代码的意图,所以YMMV。