2014-01-11 3 views
2
$a = array(1,2,3,4,5); 
$b = array(1,6,3,4,5); 
echo "<pre>"; 
print_r(array_udiff($a,$b,function($a,$b){ 
    return ($a === $b)? 0:1; 
})); 

array_udiff 사용하는 방법 설명서가 말했듯이 : 그것은해야 다른 모든 인수에 존재하지 않는 array1의 모든 값을 포함하는 배열을 반환합니다. 비교할 어레이가 두 개 뿐이라면 array_diff()과 같을 것이라고 생각합니다.
나는이 반환 기대 :내가 문제에 대한 혼란 스러워요,

Array 
(
    [0] => 2 
) 

그것을 반환 그러나 :

array_udiff()의 value_compare_func 매개 변수에 대한
Array 
(
    [0] => 1 
    [1] => 2 
    [2] => 3 
    [4] => 5 
) 
+1

확실하지 않지만 아마도 "같음"또는 "같지 않음"을 넘어서는 비교 함수의 반환 값을 사용하며 실제로는 "상위"또는 "저"인지 여부를 고려합니다. '<0','0' 또는'> 0'을 올바르게 반환하려고 시도 했습니까? – deceze

+0

@deceze 덕분에, 내가 이것을 좋아하는 것처럼, 나는 책에서 그것을 얻을 수 있기 때문에. 책의 내용은 완전히 믿을 수 없다. – ZhouMengkang

답변

2

는 "비교 함수는 정수, 이하 같음, 이상 반환해야 첫 번째 인수가 각각 두 번째 인수보다 작거나 같거나 큰 것으로 간주되면 0보다 큽니다. "

http://us1.php.net/manual/en/function.array-udiff.php

이 문제를 해결하고 2 아이템 배열을 반환한다.

$a = array(1,2,3,4,5); 
$b = array(1,6,3,4,5); 
echo "<pre>"; 

print_r(array_udiff($a,$b,function($a,$b){ 
    if ($a < $b) { 
      return -1; 
     } elseif ($a > $b) { 
      return 1; 
     } else { 
      return 0; 
     }; 
})); 
관련 문제