如何计算2个阵列的比较百分比?
How to calculate comparation percentage of 2 arrays?
如果我在 PHP 或 javascript 中有 2 个数组,最好在 PHP 中,我如何获得正确答案的百分比?
所以,我有这两个数组,我想将测验结果与正确答案进行比较并获得百分比分数:
$quiz_results = array( 'q1' => 'no',
'q2' => 'yes',
'q3' => 'no',
)
$answers = array( 1 => 'yes',
2 => 'no',
3 => 'yes'
)
运行 通过答案并将它们与问题进行比较。如果它们相同则增加正确答案计数。
$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%
解决问题的方法略有不同
$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 ) ) ];
将输出:
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
如果我在 PHP 或 javascript 中有 2 个数组,最好在 PHP 中,我如何获得正确答案的百分比?
所以,我有这两个数组,我想将测验结果与正确答案进行比较并获得百分比分数:
$quiz_results = array( 'q1' => 'no',
'q2' => 'yes',
'q3' => 'no',
)
$answers = array( 1 => 'yes',
2 => 'no',
3 => 'yes'
)
运行 通过答案并将它们与问题进行比较。如果它们相同则增加正确答案计数。
$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%
解决问题的方法略有不同
$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 ) ) ];
将输出:
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