单识别偏移错误 PHP


unidentifed offset errors php

我使用 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/>";
}

我的测验就是这样。问题选项的名称为"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>

我不确定出了什么问题

前半部分最可能的问题是$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;
})();

只需将其粘贴在控制台中,测试将自动填写正确答案。

先尝试验证值,然后再在数组
中引用它们我通常先使用空来检查,所以在您的情况下,只有在代码不为空的情况下才继续运行代码

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

您的代码看起来有两个可能的问题

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