несколько иной подход к проблеме
$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
Почему не перебираем массив вопросов и добавить точку за каждый правильный ответ? – feeela
Установите ключи на одно и то же значение и просто проверьте, $ answer [1] == $ quiz_results [1]. После этого получите общее количество вопросов по сравнению с правильной суммой – Crecket