我试图创建一个数据库驱动的测试,并需要一些评分机制的帮助。
选择他们选择的答案并按下提交按钮后,用户将被转发到具有以下脚本的页面 - 一个也会对问题/答案进行计数的答案键:
$answers = array(1 => array('D'),
2 => array('France'),
3 => array('B'),
4 => array('C', 'D'),
5 => array('D'));
$total = count($answers);
我的大多数测试都会有10或25个问题。在上面的示例中,echo $ total将显示5。
接下来是一个计算实际得分的脚本:
foreach($answers as $num => $answer){
$qa = $_POST['q'.$num.''];
if(is_array($answer)){
if($qa === $answers[$num]){
$correct++;
}
} else if($qa === $answers[$num]){
$correct++;
}
$grade = ($correct/count($answers))*100;
}
...我这样显示:
echo '<div style="background: #ff0;">Score: '.$grade.'%</div>';
我希望最终的展示看起来像这样:
得分: 90%(10个中有9个正确)
(使用十个问题的测验作为例子)
显示&#34;十分之一正确&#34;是一个明智的选择;我只需插入$ total(答案数)。但是谁能告诉我如何显示正确答案的数量(在这种情况下为9)?
我可以制作一个简单的开关,适用于具有10或25个答案的测试。但我想要一个自动计算正确答案数量的脚本,无论答案总数如何。
答案 0 :(得分:1)
我会尽力了解您的需求,所以请尝试以下代码:
<?php
$answers = array(1 => array('D'),
2 => array('France'),
3 => array('B'),
4 => array('C'),
5 => array('D'));
$total = count($answers);
$correct = 0;
foreach($answers as $num => $answer){
$qa = 'C'; // Change this to your own
if(is_array($answer)){
if($qa === $answers[$num][0]){ // Added the index 0
$correct++;
}
} else if($qa === $answers[$num]){
$correct++;
}
$grade = ($correct/count($answers))*100;
}
echo '<div style="background: #ff0;">Score: '.$grade.'%</div>';
?>
我已删除&#39; D&#39;从索引4开始,我的更改都在评论中。 告诉我这是否有效?