php에서 array_diff_key ()는 둘 이상의 배열을 비교하는 함수입니다. 값이 아닌 배열의 키를 비교합니다. 이 함수는 첫 번째 배열에 포함되어 있지만 다른 배열에는 포함되지 않은 배열을 반환합니다.
array_diff_key () 의 동작을 이해하는 것은 중첩 어레이, 특히 복잡한 연관 배열을 처리 할 때 특히 중요합니다.
array_diff_key () 함수의 기본 구문은 다음과 같습니다.
array_diff_key(array $array1, array $array2, array ...$arrays): array
$ array1은 첫 번째 배열을 비교할 배열입니다.
$ array2, ... $ 배열은 첫 번째 배열과 비교할 다른 배열입니다.
이 함수는 $ array1 에 존재하지만 다른 배열에는 존재하지 않는 키 값 쌍을 포함하는 새 배열을 반환합니다.
보통 비 넥 어레이의 경우 array_diff_key ()는 예상대로 키를 비교합니다. 예를 들어:
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['b' => 2, 'd' => 4];
$result = array_diff_key($array1, $array2);
print_r($result);
출력은 다음과 같습니다.
Array
(
[a] => 1
[c] => 3
)
Array_diff_key ()는 $ array2 에 포함되지 않은 $ array1 의 키를 반환합니다. 여기서 비교는 값이 아닌 키 이름에만 근거합니다.
중첩 어레이를 Array_Diff_Key () 로 전달하면 상황이 더욱 복잡해집니다. 중첩 어레이의 다음 예를 고려하십시오.
$array1 = [
'a' => ['name' => 'John', 'age' => 25],
'b' => ['name' => 'Jane', 'age' => 30],
'c' => ['name' => 'Tom', 'age' => 22]
];
$array2 = [
'b' => ['name' => 'Jane', 'age' => 30],
'd' => ['name' => 'Alex', 'age' => 28]
];
$result = array_diff_key($array1, $array2);
print_r($result);
출력은 다음과 같습니다.
Array
(
[a] => Array
(
[name] => John
[age] => 25
)
[c] => Array
(
[name] => Tom
[age] => 22
)
)
이 예에서 Array_Diff_Key ()는 외부 어레이 ( A , B , C )의 키를 비교하고 키가 다른 배열에 존재하는지 확인합니다. 키 B가 $ array2 에 나타나면 $ array1 에서 제외됩니다. 여기에서 내부 중첩 어레이 ( 'a'=> [ 'name'=> 'john', 'age'=> 25] )는 별도로 비교되지 않습니다. 우리는 키 A 와 C가 예약되어 있다고 말할 수 있습니다.
array_diff_key ()가 중첩 어레이의 키를 재귀 적으로 비교하지는 않는다는 점은 주목할 가치가 있습니다. 더 깊은 배열 키를 원한다면 재귀 함수를 사용하거나 수동으로 처리해야합니다. 다음은 재귀의 예입니다.
function array_diff_key_recursive($array1, $array2) {
$result = array_diff_key($array1, $array2);
foreach ($result as $key => $value) {
if (is_array($value)) {
$result[$key] = array_diff_key_recursive($value, $array2);
}
}
return $result;
}
$array1 = [
'a' => ['name' => 'John', 'age' => 25, 'address' => ['city' => 'New York', 'zip' => '10001']],
'b' => ['name' => 'Jane', 'age' => 30],
'c' => ['name' => 'Tom', 'age' => 22]
];
$array2 = [
'b' => ['name' => 'Jane', 'age' => 30]
];
$result = array_diff_key_recursive($array1, $array2);
print_r($result);
출력은 다음과 같습니다.
Array
(
[a] => Array
(
[name] => John
[age] => 25
[address] => Array
(
[city] => New York
[zip] => 10001
)
)
[c] => Array
(
[name] => Tom
[age] => 22
)
)
이 재귀 구현에서는 중첩 어레이의 재귀 배열 array_diff_key () 비교를 수행하여 내부 키를 올바르게 비교할 수 있습니다.
Array_Diff_Key () 는 주로 배열 값이 아닌 배열 키를 비교하는 데 사용됩니다.
중첩 어레이의 경우 array_diff_key ()는 외부 키만 비교하고 내부 배열은 비교하지 않습니다.
중첩 어레이의 키를 재귀 적으로 비교 해야하는 경우 사용자 정의 재귀 함수로이를 수행 할 수 있습니다.
실제 개발에서 array_diff_key () 의 동작을 이해하고 중첩 어레이에서의 응용 프로그램은 복잡한 데이터 구조를 처리하는 데 매우 중요합니다. 데이터를 유연하게 처리하고 추가 작업을위한 정확한 배열 구조를 제공하는 데 도움이됩니다.