-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 に答える