array_diff_key()는 PHP에 내장된(built-in) 함수로, 하나 이상의 배열에서 키(key)를 기준으로 서로를 비교하고 그 차이를 반환하는 함수입니다.
array_diff_key() 함수 문법
array array_diff_key($array1, $array2, ..)
이 함수는 두 개 이상의 배열 이름을 매개변수로 받을 수 있으며, 첫 번째 배열을 나머지 모든 배열과 비교합니다. 비교는 값(value)이 아닌 키만을 대상으로 이루어지며, 다른 배열에는 존재하지 않는 키를 가진 첫 번째 배열의 요소들이 결과로 반환됩니다.
사용 예제
<?php
$my_array1 = array("1"=>"Joe", "45"=>"Goldberg", "37"=>"Charolette", "91"=>"Micheal");
$my_array2 = array("1"=>"Joe", "45"=>"Goldberg", "37"=>"Charolette");
$my_array3 = array("1"=>"Joe", "45"=>"Goldberg");
print_r(array_diff_key($my_array1, $my_array2, $my_array3));
?>
실행 결과
Array ( [91] => Micheal )
코드 설명
<?php ?> 태그 안에서 세 개의 배열이 각각 특정 값을 가진 채로 선언됩니다. 그런 다음 세 개의 배열을 모두 매개변수로 전달하며 array_diff_key() 함수를 호출하고, 그 결과를 print_r()로 출력합니다.
반환되는 최종 결과는 첫 번째 배열과 두 번째 배열의 키 차이, 그리고 첫 번째 배열과 세 번째 배열의 키 차이를 모두 반영한 값입니다. 위 예제에서 키 "91"은 두 번째 배열과 세 번째 배열 어디에도 존재하지 않기 때문에, 해당 키를 가진 요소인 Micheal만 결과 배열에 남게 됩니다.
참고 사항
- 키 비교 시 문자열 표현이 동일하면 같은 키로 간주됩니다. 예를 들어 정수
1과 문자열"1"은 동일한 키로 취급됩니다. - 값(value)까지 함께 비교하려면
array_diff_assoc(), 키가 아닌 값만 비교하려면array_diff()함수를 사용할 수 있습니다. - 비교 기준이 되는 키를 콜백 함수로 직접 지정하고 싶다면
array_diff_ukey()를 활용할 수 있습니다.