dongta5747
dongta5747
2015-09-23 13:52

如何计算2个数组的比较百分比?

已采纳

How can I get a percentage of right answers if I have 2 arrays in PHP or javascript, preferably in PHP?

So, I have these two arrays and I want to compare a quiz result with the correct answers and get a percentage score:

$quiz_results = array( 'q1' => 'no',
                    'q2' => 'yes',
                    'q3' => 'no',
)

$answers = array( 1 => 'yes',
                  2 => 'no',
                  3 => 'yes'
)
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • dqjl0906 dqjl0906 6年前

    Run through the answers and compare them to the questions. If they are the same increment the correct answer count.

    $quiz_results = array( 'q1' => 'yes',
                        'q2' => 'yes',
                        'q3' => 'no',
    );
    $answers = array( 1 => 'yes',
                      2 => 'no',
                      3 => 'yes'
    );
    
    $totalquestions = count($answers);
    $correct = 0;
    foreach($answers as $key => $answer){
        //q + the key should do it. Its easier if they are the same obviously
        if($answer == $quiz_results['q'.$key]){
            // correct 
            $correct++;
        }
    }
    
    echo 100 / $totalquestions * $correct; //returns 33.333333%
    
    点赞 评论 复制链接分享
  • douejuan9162 douejuan9162 6年前

    A slightly different approach to the problem

    $rating=array_merge(
        array_fill_keys( range(0,32), 'Poor' ),
        array_fill_keys( range(33,65), 'Moderate' ),
        array_fill_keys( range(66,89), 'Above average' ),
        array_fill_keys( range(90,100), 'Excellent' )
    );
    $quiz_results = array(
        'q1' => 'no',
        'q2' => 'yes',
        'q3' => 'no'
    );
    $answers = array(
        1 => 'yes',
        2 => 'no',
        3 => 'yes'
    );
    
    $i=1;
    $score=0;
    
    while( $answer = current( $quiz_results ) ) {
        $score += ( $answer==$answers[ $i ] ) ? 1 : 0;
        echo 'Question [ '.$i.' ]: You answered: '.$answer.', The correct answer is: '.$answers[ $i ].'<br />';
        $i++;
        next( $quiz_results );
    }
    echo 'Score: '.$score.'/'.count( $quiz_results ).' - '.round( abs( ( $score / count( $quiz_results ) ) * 100 ),2).'%';
    echo '<br />Rating: '. $rating[ ceil( abs( ( $score / count( $quiz_results ) ) * 100 ) ) ];
    

    Will output:

    You answered: no, The correct answer is: yes
    You answered: yes, The correct answer is: no
    You answered: no, The correct answer is: yes
    Score: 0/3 - 0%
    Rating: Poor
    
    点赞 评论 复制链接分享

相关推荐