2010-04-13 13 views
3

안녕하세요, 나는 2 개의 배열의 모든 값을 비교하고 true 또는 false로 끝내고 싶습니다. 나는 아래 코드를 사용하고 있으며 그 결과가 거짓이라고 생각할 것이다. 하지만 마지막 줄은 내가PHP에서 두 배열의 값과 비교

배열과 같은 디스플레이 뭔가를 기대 실행하는 경우, 아니다 ([0] => 0)

하지만 난 아무 표시가 그래서 PHP가 있다는 것을 행복지지 않습니다 얻을 차이

내 코드

 $before = array('1', '1', '0', '0', '1', '0') ; 
     $after = array('0', '1', '0', '0', '1', '0') ; 

     $new_array= array_diff($before,$after); 

     print_r ($new_array) ; 

는 반드시 array_diff 여기에 차이를 발견해야하지? 어떤 도움이라면 큰 도움이 될 것입니다.

답변

8

array_diff$before에 속하지만 $after이 아닌 요소를 제공합니다. 두 배열은 모두 '0''1'으로 이루어져 있으므로 빈 배열을 반환합니다.

당신이 찾고있는 것은 array_diff_assoc이며 키와 값을 함께 봅니다.

출력은 Array([0] => 0)이 아니라 Array([0] => 1)이 될 것입니다. 첫 번째 배열에서 다른 요소에 존재하지 않는 요소를 제공하므로 출력 결과는 Array([0] => 0)이 아니라 Array([0] => 1)이됩니다.

다른 출력을 원하면 array_diff_assoc($after, $before)을 입력해야합니다.

0

예, array_diff은 차이점을 발견하지 못합니다. 다음 배열과 첫 번째 배열의 차이점을 찾습니다. 그러나 0과 0, 1과 1을 비교하지는 않습니다. Array1의 각 값이 Array2 ... ArrayN에 있는지 단순히 확인합니다. 이 함수는 다른 배열에없는 Array1에있는 모든 항목의 배열을 반환하지만 true/false 부울은 반환하지 않습니다. See example 1 in the documentation.

3
$before = array('1', '1', '0', '0', '1', '0') ; 
    $after = array('0', '1', '0', '0', '1', '0') ; 

    $new_array= array_diff_assoc($before,$after); 

    print_r ($new_array) ;