Php 未识别的偏移量错误
我用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
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-IFVALUE=“1”
在所有问题上,js函数如何工作?“未识别”!=“未定义”"。我只能假设$data数组是在其他地方使用的,并且当您尝试手动设置数值索引时,它在一定范围内。我的假设是,您的PHP版本首先检查该数组中是否存在该值,以防它需要覆盖该值。您可能会通过重置来消除该错误在设置值之前先执行$data=array(),我需要更多的信息来了解$answers是怎么回事。