2012-12-13 27 views
-1

我在编写一个PHP测验应用程序,并且在评分机制上遇到了一些麻烦。具体来说,我有两个数组,我比较以确定答案是否正确。PHP中的复杂数组比较

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

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(),但必须有更优雅的解决方案。

任何帮助非常感谢!

回答

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 
} 
+0

感谢迈克,我知道它必须有'array_intersect' –

1

使用array_intersect()有什么问题?

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

$result = count(array_intersect($array1, $array2)) === count(arr1.count); 
?> 
+1

这不是Java或JavaScript。 –