在这里,我说的是用户输入的答案编号,并将其与文件中的输入进行比较,虽然两者相等,但为了不更正,它会将1加到false。那么我的代码有什么问题呢
<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>
发布于 2017-06-29 15:25:54
这里面有很多缺失的信息。Questions.txt文件中有什么?答案是如何发布的?
假设(这里有很大的假设)问题txt文件被分成几个问题,每一行都用|分隔答案。
例如:
> what is 1+1?|2
> how do you spell red|red
还假设用户提供的答案是以逗号分隔的列表发布的。
例如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
?>
如果这些假设是不正确的,也许你可以把它们作为建议?
https://stackoverflow.com/questions/44828476
复制