-1

我正在编写一个 PHP 测验应用程序,并且在评分机制方面遇到了一些问题。具体来说,我有 2 个数组进行比较以确定答案是否正确。

我想验证一个数组的所有值是否都在另一个数组中找到。例如,如果正确答案

Array
(
    [0] => Proprietary user community
    [1] => Surveys
    [2] => Voice
    [3] => Online chat
    [4] => Web
    [5] => Email
    [6] => Social media
)

用户提供的答案是:

Array
(
    [0] => Surveys
    [4] => Online chat
    [6] => Email
) 

系统返回不正确,因为没有提供所有正确的值。同样,如果用户提供的答案如下所示:

Array
(
    [0] => Proprietary user community
    [1] => Surveys
    [2] => Voice
    [3] => Online chat
    [4] => Web
    [5] => Email
    [6] => Social media
    [7] => Phone
    [8] => Live chat
)

如果提供了其他答案,答案将是正确的。

有任何想法吗?我一直在考虑使用array_intersect(),但必须有一个更优雅的解决方案。

任何帮助深表感谢!

4

3 回答 3

2

只需将数组相交并比较大小即可。

$answer_key = array(/* your answer key here */);
$user_answers = array(/* user answers here */);

$intersection = array_intersect($answer_key, $user_answers);

if (count($answer_key) === count($intersection)) {
    // winner, winner, chicken dinner
} else {
    // fail
}
于 2012-12-13T22:13:48.797 回答
1

使用 array_intersect() 有什么问题?

<?php
$arr1 = array("a" => "green", "red");
$arr2 = array("b" => "green", "yellow", "red");

$result = count(array_intersect($array1, $array2)) === count(arr1.count);
?>
于 2012-12-13T22:10:43.237 回答
0

数组差异会更好:

http://php.net/manual/en/function.array-diff.php

if (empty(array_diff($correctArray, $userAnswers))) {
    // correct
} else {
    // incorrect
}
于 2012-12-13T22:12:41.463 回答