2012-12-13 8 views
-1

저는 PHP 퀴즈 응용 프로그램을 프로그래밍 중이며 채점 메커니즘에 약간의 문제가 있습니다. 특히, 나는 답이 맞는지 아닌지를 비교하기 위해 2 개의 배열을 가지고 있습니다.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

http://php.net/manual/en/function.array-diff.php는 그냥 배열을 교차와 크기를 비교합니다.

$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()를 사용하는 것이 잘못된 이유는 무엇입니까? DIFF이 더 나은 것

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

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

이것은 자바 또는 자바 스크립트가 아닙니다. –

0

배열 :

if (empty(array_diff($correctArray, $userAnswers))) { 
    // correct 
} else { 
    // incorrect 
}