매일 PHP 개발에서 우리는 종종 배열의 차이점을 비교 해야하는 상황을 발생시킵니다. 다차원 배열의 경우, array_diff_ukey ()는 최상위 키 (1 단계 키)의 차이에 대해서만 관심을 갖고 해당 값을 비교하지 않으면 매우 실용적인 도구입니다.
이 기사에서는 Array_diff_ukey ()를 사용하여 두 개의 다차원 배열의 최상위 키를 비교하고 다른 부분을 찾는 방법을 설명합니다.
array_diff_ukey ()는 키 이름이 복제되지 않은 두 개 이상의 배열에서 파트를 찾기 위해 사용자가 제공 한 콜백 함수를 기반으로 키 이름을 비교하는 데 사용됩니다.
문법:
array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array
$ array1 : 비교할 배열.
$ array2 : 첫 번째 배열과 비교하는 데 사용되는 배열.
$ key_compare_func : 사용자 정의 키 비교 함수.
두 개의 다른 구성 세트를 나타내는 두 개의 다차원 배열이 있다고 가정합니다. 기본 구성에 존재하지만 비교 구성에는없는 최상위 키 (1 단계 키)를 찾으려고합니다.
$configMain = [
'database' => [
'host' => 'localhost',
'port' => 3306
],
'cache' => [
'enabled' => true
],
'api' => [
'endpoint' => 'https://m66.net/api'
]
];
$configCompare = [
'database' => [
'host' => '127.0.0.1',
'port' => 3306
],
'cache' => [
'enabled' => false
]
];
$ configmain 의 최상위 키가 $ configcompare (위의 예제의 API 키와 같은)에 어떤 최상위 키가 표시되지 않는지 알고 싶습니다.
<?php
function compareKeys($a, $b) {
if ($a === $b) {
return 0;
}
return ($a > $b) ? 1 : -1;
}
$configMain = [
'database' => [
'host' => 'localhost',
'port' => 3306
],
'cache' => [
'enabled' => true
],
'api' => [
'endpoint' => 'https://m66.net/api'
]
];
$configCompare = [
'database' => [
'host' => '127.0.0.1',
'port' => 3306
],
'cache' => [
'enabled' => false
]
];
$diffKeys = array_diff_ukey($configMain, $configCompare, 'compareKeys');
print_r($diffKeys);
Array
(
[api] => Array
(
[endpoint] => https://m66.net/api
)
)
보시다시피, Array_diff_ukey ()는 $ configmain 으로 존재하지만 $ configCompare 에서는 최상위 수준 키 API를 성공적으로 찾습니다.
콜백 함수는 두 키를 비교하는 함수 여야합니다. 반환 값 규칙은 strcmp () 와 동일합니다. 0보다 작고, 0, 0보다 큽니다.
이 함수는 값을 비교하지 않고 키 만 비교합니다.
중첩 구조를 비교하려면 최상위 키에 대해서만 유효합니다. 재귀 논리를 사용하여 일치하십시오.
Array_diff_ukey ()를 사용하는 것은 두 배열 간의 키 이름 차이 를 비교하는 효율적이고 간결한 방법입니다.
구성 차이, 구조 비교 또는 권한 검증 수행에 관계 없이이 기능의 사용을 마스터하면 클리너 및 명확한 PHP 코드를 작성할 수 있습니다.
키 값 쌍의 차이점을 더 비교하려면 Array_Diff_Assoc () 또는 사용자 정의 재귀 기능 처리를 사용하는 것을 고려할 수 있습니다.