我正在使用测验引擎并且正在比较答案。
我有两个数组
正确答案:
0 => "a"
1 => "a"
2 => "a"
3 => "c"
选择答案......
0 => "c"
1 => "b"
2 => "a"
3 => "b"
基于此,我知道(通过比较自己)我有1个正确答案。
是否有一个PHP函数可以比较键和值并增加一些类似的?
我看过array_intersect和array_difference,但他们似乎没有给我所需的答案。
由于
答案 0 :(得分:5)
使用array_intersect_uassoc函数的简短解决方案(在扩展输入数组上):
$correct = ["a", "a", "a", "c", "a", "c"];
$chosen = ["c", "b", "a", "b", "a", "b"];
$result = array_intersect_uassoc($correct, $chosen, 'strnatcmp');
print_r($result);
输出:
Array
(
[2] => a
[4] => a
)
答案 1 :(得分:1)
我会编写一个函数,为每个键生成一个数组,如果答案是正确的(1,或者如果错误则为0),那么你不仅可以快速计算分数,还可以使用数组在以后显示问卷结果。就像显示哪些问题是正确的以及哪些问题是错误的那样。
<?php
$corrects = array(
0 => "a",
1 => "a",
2 => "a",
3 => "c"
);
$answers = array(
0 => "a",
1 => "a",
2 => "a",
3 => "c"
);
function verify($answers, $corrects) {
$results = array();
foreach($corrects as $question => $correct) {
$results[$question] = $correct == $answers[$question] ? 1 : 0;
}
return $results;
}
$results = verify($answers, $corrects);
$score = array_sum($results);
?>
它为更复杂的评分或多个正确答案问题等留下了空间。