PHP에서 array_diff_key () 함수는 두 개 이상의 배열 사이의 주요 차이를 계산하는 데 사용됩니다. 다른 배열에 존재하는 첫 번째 배열의 모든 키의 차이를 포함하는 배열을 반환합니다. 두 배열의 키가 정확히 동일하면 결과는 빈 배열입니다.
<?php
$array1 = [
'apple' => 'fruit',
'carrot' => 'vegetable',
'pear' => 'fruit'
];
$array2 = [
'apple' => 'fruit',
'carrot' => 'vegetable'
];
$result = array_diff_key($array1, $array2);
print_r($result);
?>
산출:
Array
(
[pear] => fruit
)
이 코드는 array_diff_key () 함수에 의해 두 배열의 키 차이를 계산하는 방법을 보여줍니다. 이 예에서 Pearl은 $ array1 에만 나타나므로 반환됩니다.
더 특별한 상황을 더 탐구합시다. 배열의 키가 문자열이나 정수 일 때 Array_diff_key ()는 어떻게 행동합니까? PHP에서 배열의 키는 정수, 문자열 또는 다른 유형의 값 (예 : 객체 등) 일 수 있습니다. 그러나 PHP는 특정 데이터 유형을 배열 키로 String 또는 Integer 유형으로 변환합니다. 따라서 배열의 키가 문자열이나 정수가 아닌 경우 유형 변환이 발생할 수 있습니다.
다음 코드 예제를 고려하십시오.
<?php
$array1 = [
new DateTime() => 'time object',
3.14159 => 'pi',
true => 'boolean'
];
$array2 = [
'2025-04-18 10:00:00' => 'time object',
3 => 'pi',
'1' => 'boolean'
];
$result = array_diff_key($array1, $array2);
print_r($result);
?>
이 예에서 $ array1은 다양한 유형의 키를 사용합니다 : DateTime 객체, 부동 소수점 번호 및 부울. $ array2는 문자열 '2025-04-18 10:00:00' , 정수 3 및 문자열 '1'을 키로 사용합니다. Array_Diff_Key () 가이 키를 처리하는 방법을 분석 해 봅시다.
PHP 배열 키, 비 인스거 및 비 스트링 키가 입력 할 때 입력됩니다. 구체적으로:
DateTime 객체는 문자열 표현으로 변환됩니다 ( dateTime :: __ toString () ).
플로팅 포인트 번호 3.14159는 문자열 "3.14159" 로 변환됩니다.
부울 진정한 값은 문자열 "1" 로 변환됩니다.
따라서 이러한 키를 처리 할 때 Array_Diff_Key ()를 원래 키와 비교할 수 있으며 유형 수정 키는 다른 것으로 간주됩니다.
array_diff_key ()는 주요 유형 변환 규칙에 따라 비교됩니다. 배열의 키가 문자열이나 정수가 아닌 경우 PHP는 이러한 키를 문자열 또는 정수로 자동 변환하여 이러한 변환 된 값을 기반으로 비교합니다. 특정 특수 데이터 유형, 특히 객체 또는 부울에 대해 직관적이지 않은 결과가 발생할 수 있습니다. 따라서 Array_Diff_Key ()를 사용할 때는 배열의 키가 예기치 않은 유형 변환을 피하기 위해 문자열 또는 정수인지 확인하는 것이 가장 좋습니다.