2012-02-22 2 views
0

, 나는 PHP에서 두 배열이 있습니다PHP의 두 배열에서 고유 한 요소를 찾는 방법은 무엇입니까? 예를 들어

$arr1 = array(1,3,5); 
$arr2 = array(1,4,6); 

내가 각 각 배열에 고유 한 요소를 포함하여, 두 개의 새로운 배열을 생성하고 싶습니다. 그래서 출력으로 다음 두 배열을 얻고 싶습니다 :

$arr1_uniques = array(3,5); 
$arr2_uniques = array(4,6); 

이것을 수행하는 가장 좋은 방법은 무엇입니까?

답변

6

사용 array_diff() 지금처럼 서로 각각의 배열을 뺄 :

$arr1_uniques = array_diff($arr1, $arr2); 
$arr2_uniques = array_diff($arr2, $arr1); 
+0

실제로 교차 및 건너 뛰기를 다른 배열과 직접 건너 뛸 수 있습니다. 존재하지 않는 요소를 제거해도 영향을 미치지 않습니다. –

+0

매뉴얼에서 선언 한대로 array_diff로 중복을 찾을 필요가 없습니다. "다른 배열에없는 array1의 모든 항목을 포함하는 배열을 반환합니다." – Electronick

+0

멋지다, 나는 그것을 놓쳤다 - 분명히 나는 ​​달 동안 활발히 사용하지 않고 있었던 언어로 질문에 대답해서는 안된다. 편집 됨. – BoltClock

0

당신은 그 문제를 달성하기 위해 array_diff 기능을 사용할 수 있습니다. 원하는 결과를 얻으려면 두 번 사용해야합니다.

0

당신 만의 기능을 쓸 수 있습니다. 예 :

function uniq(array $arr){ 

$temp_arr = []; 
for ($i = 0; $i < sizeof($arr); $i++) { 
    if (in_array($arr[$i], $temp_arr)) { 
      continue; 
    } 

    $temp_arr[] = $arr[$i]; 

    } 

return $temp_arr; 
} 

print_r(uniq([1, 2, 3, 6, 6, 6, 7, 8, 7, 2, 2, 3, 6, 7, 0, 12, 123, 1, 4, 7, 66, 77])); 

///Output: Array 
(
[0] => 1 
[1] => 2 
[2] => 3 
[3] => 6 
[4] => 7 
[5] => 8 
[6] => 0 
[7] => 12 
[8] => 123 
[9] => 4 
[10] => 66 
[11] => 77 
) 
+0

이미 내장 함수가 있기 때문에 아주 좋은 생각은 아닙니다. – JJJ

관련 문제