这里我用来自用户输入的答案编号并将其与文件中的输入进行比较,虽然它们都是相同的但是它加了一个假而不纠正所以我的代码有什么问题
<body>
<?php
$read = file("Questions.txt");
$Questions[] = -1;
$x = 0;
foreach($read as $line){
$Questions[$x] = $line;
$x++;
}
$output[] = '';
$correct = 0;
$false = 0;
$counter = 0;
$answer = $_POST['answers'];
for ($b=0;$b<7;$b++){
$output[$b] = "";
}
for ($y = 0;$y<$x;$y++){
$temp = $Questions[$y];
for ($a=0;$a<strlen($temp);$a++){
if ($temp{$a} == "~"){
$counter++;
}
else {
$output[$counter] = $output[$counter] . $temp{$a};
}
}
if (strcmp ($answer[0],$output[6]) == 0){
$correct++;
}
else {
$false++;
}
$counter = 0;
for ($u=0;$u<7;$u++){
$output[$u] = "";
}
}
?>
</body>
答案 0 :(得分:0)
这里有很多缺少的信息。在Questions.txt文件中有什么?如何发布答案?
假设(这里有很大的假设)问题txt文件被分成几个问题,答案由|分开。在每一行。
e.g。
> what is 1+1?|2
> how do you spell red|red
还假设用户提供的答案以逗号分隔列表的形式发布。
e.g。 2,红
如果是这样的话......
<?php
$read = file("Questions.txt");
$questions = [];
$answers = [];
foreach($read as $line){
$qa = explode('|', $line);
$questions[] = $qa[0];
$answers[] = $qa[1];
}
$output = [];
$correct = 0;
$false = 0;
$userAnswers = explode(',', $_POST['answers']);
foreach($userAnswers as $key => $answer){
if($answers[$key] == $answer){
$correct++;
$output[] = $questions[$key].' is correct';
}else{
$false++;
$output[] = $questions[$key].' is incorrect';
}
}
print_r($output); //or whatever
?>
如果这些假设不正确,您可以将它们用作建议吗?