묻고답하기

array_intersect()함수는 1번째 인자로 지정된 배열을 기준으로 2번째, 3번째...인자로 지정된 배열의 원소값과 일치하는 원소들만을 원소로 갖는 배열을 만들어 반환하는 함수로 알고 있거든요. 이와 반대되는 함수는 array_diff() 함수로 알고 있구요.
그런데, 이상하게도 array_diff() 함수의 경우에는 함수의 인자로 3개 이상의 배열을 지정할 수 있는데, array_intersect()함수의 경우에는 함수의 인자로 3개 이상의 배열을 지정하면 아무런 값도 추출해 내지 못 하더라구요.
테스트는 Window시스템과 Linux시스템 모두에서 테스트 해 봤는데, 마찬가지였구요.

제가 테스트한 소스를 보여드리자면...

<소스1>
# array_diff()함수를 사용할 경우 #
$arr1=array(1,2,3,4,5);
$arr2=array(1);
$arr3=array(3);
$arr4=array(5);

$newarr=array_diff($arr1,$arr2,$arr3,$arr4);
for($num=0;$num<sizeof($arr1);$num+=1){
        echo $num." - ".$newarr[$num]."<br>";
}
<결과>
0 -
1 - 2
2 -
3 - 4
4 -

<소스2>
# array_intersect()함수를 사용할 경우 #
$arr1=array(1,2,3,4,5);
$arr2=array(1);
$arr3=array(3);
$arr4=array(5);

$newarr=array_intersect($arr1,$arr2,$arr3,$arr4);
for($num=0;$num<sizeof($arr1);$num+=1){
        echo $num." - ".$newarr[$num]."<br>";
}
<결과>
0 -
1 -
2 -
3 -
4 -

왜? array_intersect()함수만 아무런 값도 추출해 내지 못하나요? array_intersect()함수와 반대되는 함수인 array_diff()함수는 잘 추출해 내는데... 원래 그런건지, 아니면 제가 뭔가 잘 못 한 건지 무지 궁금해요.
좋은 답변 부탁드려요(__)