PHP에서 배열 작업은 매우 일반적인 작업이며, 배열을 효율적으로 처리하는 데 도움이되는 많은 내장 기능이 있습니다. Array_diff_key ()는 키 이름과 차이점을 반환하는 배열을 기준으로 배열을 비교하는 데 도움이되는 매우 실용적인 기능입니다. 여러 번 개발자는이 기능에 대해 몇 가지 오해를하며, 키 이름에 해당하는 값을 비교할 것이라고 믿지만 실제로는 배열 만 비교할 것입니다. 오늘 우리는이 기능의 사용법을 자세히 분석하고 몇 가지 일반적인 오해를 명확하게 할 것입니다.
Array_Diff_Key () 함수는 두 개의 배열을 비교하고 다른 배열에 표시되지 않는 첫 번째 배열의 키 이름을 포함하는 요소를 반환하는 데 사용됩니다. 즉, 첫 번째 배열에는 존재하지만 다른 배열에는 그렇지 않은 키 이름을 포함하는 차이 세트를 반환합니다.
기능 프로토 타입은 다음과 같습니다.
array_diff_key(array $array1, array $array2, array ...$arrays): array
$ array1 : 첫 번째 배열을 비교합니다.
$ array2, ... $ 배열 : $ array1 과 비교 해야하는 배열 (다중 배열을 전달할 수 있음).
이 기능을보다 명확하게 이해하려면 실제 코드 예를 살펴 보겠습니다.
<?php
$array1 = [
'a' => 1,
'b' => 2,
'c' => 3
];
$array2 = [
'b' => 5,
'c' => 3,
'd' => 7
];
$result = array_diff_key($array1, $array2);
print_r($result);
?>
출력 결과는 다음과 같습니다.
Array
(
[a] => 1
)
이 예에서는 array_diff_key () 함수는 $ array1 및 $ array2 의 키 이름을 비교합니다. 'A'는 $ array2 에 해당 키가 없기 때문에 키 이름 'A' 가 포함 된 새 배열을 반환합니다.
array_diff_key () 함수의 중요한 기능은 키 이름 만 비교 하지만 키 이름의 해당 값을 고려하지 않는다는 것입니다. 위의 예에서, 우리는 키 이름 'b' 와 'c'가 두 배열 모두에 나타나지만 그 값은 다릅니다. $ array1 의 'b' 에 해당하는 값은 2 이고, $ array2 의 'b' 에 해당하는 값은 5 입니다. 그러나 Array_diff_key ()는 값을 비교하지 않고 주요 이름 만 비교하므로 반환 결과에 'b' 나 'c' 도 나타나지 않습니다.
Array_Diff_Key ()는 여러 배열을 매개 변수로 수용하여 여러 배열에서 키 이름을 비교할 수도 있습니다. 여러 배열이 포함 된 예입니다.
<?php
$array1 = [
'a' => 1,
'b' => 2,
'c' => 3
];
$array2 = [
'b' => 5,
'c' => 3,
'd' => 7
];
$array3 = [
'c' => 3,
'd' => 7,
'e' => 8
];
$result = array_diff_key($array1, $array2, $array3);
print_r($result);
?>
출력 결과는 다음과 같습니다.
Array
(
[a] => 1
)
여기서 Array_diff_key ()는 $ array1 및 $ array2 및 $ array3 의 주요 이름을 비교합니다. 'b' 와 'c' 는 다른 배열에서 해당 키 이름을 찾기 때문에 결과는 여전히 키 이름 'a' 일뿐입니다.
키 이름 만 비교 : 앞에서 언급했듯이 Array_diff_key ()는 키 이름 만 비교되며 키 값을 비교하지 않습니다.
다중 배열 비교 : 여러 배열을 전달할 수 있습니다. Array_Diff_Key ()는 모든 배열의 키 이름을 기반으로 첫 번째 배열에서 고유 키 이름을 반환합니다.
원래 배열은 변경되지 않습니다 .이 기능은 원래 배열을 수정하지 않고 새 배열을 반환합니다.
때로는 개발자가 MARRAY_DIFF_KEY ()가 배열의 주요 값을 비교할 것이라고 잘못 생각할 수도 있습니다. 예를 들어 다음 코드 :
<?php
$array1 = [
'a' => 10,
'b' => 20,
'c' => 30
];
$array2 = [
'a' => 10,
'b' => 25,
'c' => 30
];
$result = array_diff_key($array1, $array2);
print_r($result);
?>
출력 결과 :
Array
(
)
이 예에서는 Array $ array1 및 $ array2 의 키 'b' 값이 다르지만 (각각 20 과 25 ) array_diff_key ()는 빈 배열을 반환하고 키 이름 만 비교하고 키 이름 'A' 와 'c' 는 두 배열에 있으므로 반환되지 않습니다.
Array_Diff_Key ()는 주요 배열 이름을 쉽게 비교하여 첫 번째 배열에는 존재하지만 다른 배열에서는 그렇지 않은 것을 찾는 데 도움이되는 매우 유용한 PHP 기능입니다. 핵심 값이 아닌 키 이름 만 비교합니다 . 이 기능은 다차원 배열을 처리하거나 키 이름만으로 데이터를 필터링해야 할 때 특히 유용합니다.