PHP에서 array_diff_key () 함수는 두 개 이상의 배열을 비교하여 다른 배열 키와 다른 첫 번째 배열의 부분을 반환하는 데 사용됩니다. 다음 형식으로 사용됩니다.
array_diff_key(array $array1, array $array2, array ...$arrays): array
이 기능에 의해 반환 된 결과는 다음과 같습니다. 첫 번째 배열의 모든 키는 다른 배열에 나타나지 않습니다 . 즉, 다른 배열에 키가 존재하지 않는 경우에만 결과에 나타납니다.
그러나 빈 배열이 전달되면 함수의 동작으로 인해 특별한 현상이 발생합니다. 빈 배열을 통과 할 때 어떤 종류의 반환 값 array_diff_key () 가 있을지 논의 해 봅시다.
$array1 = ["a" => 1, "b" => 2, "c" => 3];
$array2 = [];
$result = array_diff_key($array1, $array2);
print_r($result);
Array
(
[a] => 1
[b] => 2
[c] => 3
)
두 번째 배열 $ array2가 빈 배열 인 경우 Array_Diff_Key ()는 첫 번째 배열 $ array1 의 모든 키 값 쌍을 직접 반환합니다. 이유는 다음과 같습니다.
Array_Diff_Key () 의 원리는 키 차이에 따라 배열을 반환하는 것입니다.
두 번째 배열이 비어 있으면 첫 번째 배열의 키와 비교할 키가 없습니다. 따라서 첫 번째 배열의 모든 키는 두 번째 배열에서 찾을 수 없습니다.
따라서 Array_diff_key ()는 "무엇이든 다르기 때문에"첫 번째 배열의 모든 키 값 쌍을 반환합니다.
이 예에서 두 번째 배열이 비어 있으면 Array_Diff_Key ()가 비교하지 않으며 첫 번째 배열을 직접 반환 할 수 있습니다.
여러 배열이 전달되면 빈 배열이 있으면 Array_Diff_Key () 의 동작은 다른 배열에 있지 않은 첫 번째 배열에서 키를 반환해야합니다. 예를 들어:
$array1 = ["a" => 1, "b" => 2, "c" => 3];
$array2 = [];
$array3 = ["a" => 100];
$result = array_diff_key($array1, $array2, $array3);
print_r($result);
실행 결과 :
Array
(
[b] => 2
[c] => 3
)
이 예에서 첫 번째 배열 $ array1 의 키 "A"키는 세 번째 배열 $ array3 에 존재하므로 "A"는 리턴 결과에 나타나지 않습니다. "B"와 "C"는 $ array3 에서는 찾을 수 없으므로 보존됩니다.
빈 배열이 array_diff_key () 로 전달되면 첫 번째 배열의 모든 요소가 반환됩니다.
빈 배열에는 다른 배열에 비해 키가 없으므로 모든 키가 다른 어레이에 나타나지 않는 것으로 간주됩니다.
여러 배열이 전달되고 빈 배열이 있으면 Array_Diff_Key () 의 동작은 실제 비교 배열에 따라 결과를 계속 반환합니다.