Php 未识别的偏移量错误

Php 未识别的偏移量错误,php,error-handling,Php,Error Handling,我用PHP做了一个简单的测验评分,但出现了无法识别的偏移错误,但效果很好 错误: Notice: Undefined offset: 0 in C:\Users\scorequiz1.php on line 17 Notice: Undefined offset: 1 in C:\Users\scorequiz1.php on line 18 Notice: Undefined offset: 2 in C:\Users\scorequiz1.php on line 19 Notice: Und

我用PHP做了一个简单的测验评分,但出现了无法识别的偏移错误,但效果很好

错误:

Notice: Undefined offset: 0 in C:\Users\scorequiz1.php on line 17
Notice: Undefined offset: 1 in C:\Users\scorequiz1.php on line 18
Notice: Undefined offset: 2 in C:\Users\scorequiz1.php on line 19
Notice: Undefined offset: 3 in C:\Users\scorequiz1.php on line 20
Notice: Undefined offset: 4 in C:\Users\scorequiz1.php on line 21

Notice: Undefined offset: 0 in C:\Users\scorequiz1.php on line 52
Question 1. Correct.

Notice: Undefined offset: 1 in C:\Users\scorequiz1.php on line 52
Question 2. Incorrect.

Notice: Undefined offset: 2 in C:\Users\scorequiz1.php on line 52
Question 3. Correct.

Notice: Undefined offset: 3 in C:\Users\scorequiz1.php on line 52
Question 4. Correct.

Notice: Undefined offset: 4 in C:\Users\scorequiz1.php on line 52
Question 5. Incorrect.
第17至21行:

$data[0] = $_POST["a"];
$data[1] = $_POST["b"];
$data[2] = $_POST["c"];
$data[3] = $_POST["d"];
$data[4] = $_POST["e"];
第50-56行:

for($i = 0; $i < 5; $i++)
{
     if($answer[$i] == 1)
         echo "Question " . ($i+1) . ". " . "Correct.<br/>";
     else
         echo "Question " . ($i+1) . ". " . "Incorrect.<br/>";
}
($i=0;$i<5;$i++)的

{
如果($answer[$i]==1)
回应“问题”。($i+1)。“。”正确。
; 其他的 附和“问题”。($i+1)。“。不正确。
”; }
我的测验就是这样。问题选项的名称为“a”到“e”,并具有用于检查正确答案的值

<!-- question 1---->
<INPUT TYPE="radio" NAME="a" VALUE="1">10 days<BR>
<INPUT TYPE="radio" NAME="a" VALUE="1">40 days<BR>

<!-- question 2---->
<INPUT TYPE="radio" NAME="b" VALUE="1">True<BR>
<INPUT TYPE="radio" NAME="b" VALUE="1">False<BR>

10天
40天
正确


我不确定出了什么问题

上半年最可能出现的问题是,
$data
可能已经设置为其他内容。试试这个:

$data = Array($_POST['a'],$_POST['b']...);
对于后半部分,您确定正确定义了
$answer
?看起来你的意思是
$data

旁注:我可以通过以下方法立即在您的考试中获得满分:

(function() {
    var qsa = document.querySelectorAll("input[type=radio]"), l = qsa.length, i;
    for( i=0; i<l; i++) if( qsa[i].value == "1") qsa[i].checked = true;
})();
(函数(){
var qsa=document.queryselectoral(“input[type=radio]”),l=qsa.length,i;

对于(i=0;i在数组中引用值之前,请先尝试验证值
我通常先使用empty进行检查,因此在您的情况下,只有在代码不为空时才继续运行代码

    if (!empty($data[0])) 
    if (!empty($answer[$i])) 

您的代码可能有两个问题

  • 您正在将值设置为
    $data
    变量,并使用
    $answer
    变量检查正确性。如果有两个变量是故意的,则意味着您必须使用某个数据库进行检查,并在其他未显示的位置创建
    $answer
    数组-也共享该代码
  • 您共享的示例HTML将
    value=“1”
    写入到问题的所有选项中。如果这正是您在代码中的方式,则意味着您将得到1,即使选择了任何答案

  • $answers[]是一个数组,用于跟踪用户答对的问题。开始时,它被初始化为0,然后我使用IF语句查看用户是否答对了如果($data[0]=“2”){$answer[0]=1;$points++“@Kolink-IF
    VALUE=“1”
    在所有问题上,js函数如何工作?“未识别”!=“未定义”"。我只能假设$data数组是在其他地方使用的,并且当您尝试手动设置数值索引时,它在一定范围内。我的假设是,您的PHP版本首先检查该数组中是否存在该值,以防它需要覆盖该值。您可能会通过重置来消除该错误在设置值之前先执行$data=array(),我需要更多的信息来了解$answers是怎么回事。