显示正确答案的数量

时间:2016-02-10 01:29:34

标签: php

我试图创建一个数据库驱动的测试,并需要一些评分机制的帮助。

选择他们选择的答案并按下提交按钮后,用户将被转发到具有以下脚本的页面 - 一个也会对问题/答案进行计数的答案键:

$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个答案的测试。但我想要一个自动计算正确答案数量的脚本,无论答案总数如何。

1 个答案:

答案 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开始,我的更改都在评论中。 告诉我这是否有效?