PHP의 array_diff_assoc() 함수는 배열의 키(key)와 값(value)을 모두 비교하여 두 배열 간의 차이점을 반환하는 함수입니다.
비슷한 함수인 array_diff()는 오직 값만 비교하는 반면, array_diff_assoc()는 키와 값의 쌍 전체를 기준으로 비교한다는 점이 가장 큰 차이입니다. 따라서 값이 같더라도 키가 다르면 서로 다른 요소로 판단됩니다.
문법(Syntax)
array_diff_assoc(arr1, arr2, arr3, arr4, …)
매개변수(Parameters)
arr1 − 비교의 기준이 되는 배열입니다. (필수)
arr2 − arr1과 비교할 대상 배열입니다. (필수)
arr3 − 추가로 비교하고 싶은 배열입니다. (선택)
arr4 − 추가로 비교하고 싶은 배열입니다. (선택)
필요하다면 세 번째, 네 번째 배열뿐 아니라 그 이상의 배열도 계속 추가하여 비교할 수 있습니다.
반환값(Return)
array_diff_assoc() 함수는 비교 결과를 배열 형태로 반환합니다. 구체적으로는 arr1에 있는 값 중에서, 다른 어떤 배열에도 (키와 값의 쌍이 일치하지 않아) 존재하지 않는 모든 값을 담은 배열을 반환합니다.
예제(Example)
<?php
$arr1 = array("p"=>"football","q"=>"cricket","r"=>"hockey");
$arr2 = array("s"=>"football","t"=>"cricket");
$res = array_diff_assoc($arr1,$arr2);
print_r($res);
?>
실행 결과(Output)
Array
(
[p] => football
[q] => cricket
[r] => hockey
)
결과 해설
$arr1과 $arr2는 "football", "cricket"처럼 값 자체는 동일하지만, 키가 각각 "p", "q"와 "s", "t"로 서로 다릅니다. array_diff_assoc()는 키와 값을 함께 비교하기 때문에 키-값 쌍이 일치하는 요소가 하나도 없어, 결국 $arr1의 모든 요소가 그대로 반환된 것입니다.
만약 키까지 동일했다면(예: $arr2 = array("p"=>"football") ) 해당 요소는 결과에서 제외됩니다. 이 점이 값만 비교하는 array_diff()와 확연히 구분되는 부분이니, 실무에서 두 함수를 선택할 때 꼭 기억해 두세요.