PHP에서 Array_udiff () 는 사용자 정의 비교 함수를 사용하여 둘 이상의 배열 간의 차이를 비교할 수있는 매우 강력한 기능입니다. 이는 간단한 값이나 주요 비교에 의존하기보다는 특정 비즈니스 요구에 따라 "동등한"또는 "동등한"판단 논리를 유연하게 정의 할 수 있음을 의미합니다.
array_udiff(array $array1, array $array2, callable $value_compare_func): array
$ array1 : 첫 번째 배열을 비교합니다.
$ array2 : 첫 번째 배열과 비교 해야하는 두 번째 배열.
$ value_compare_func : 사용자 정의 비교 함수.
이 함수는 $ array1 에서 값을 반환하지만 $ array2 에서는 그렇지 않으며 사용자 정의 함수와 비교됩니다.
오늘 로그인 한 사용자와 지난 달에 활동했던 사용자가 두 개의 사용자 목록이 있다고 가정 해 봅시다. 각 사용자 정보는 ID 및 이메일이 포함 된 배열입니다. 우리는 오늘날 로그인 한 사용자, 즉 과거에 적극적으로 참여한 적이없는 사용자 중 "신규 사용자"를 알고 싶습니다.
// 사용자가 오늘 로그인했습니다
$todayUsers = [
['id' => 101, 'email' => 'alice@m66.net'],
['id' => 102, 'email' => 'bob@m66.net'],
['id' => 103, 'email' => 'carol@m66.net'],
];
// 지난 달에 활발한 사용자
$pastActiveUsers = [
['id' => 102, 'email' => 'bob@m66.net'],
['id' => 104, 'email' => 'dan@m66.net'],
];
// 사용자 정의 비교 기능:통과하다 email 사용자가 동일한 지 확인하십시오
function compareUsersByEmail($a, $b) {
return strcmp($a['email'], $b['email']);
}
// 알아내다“새로운 사용자”
$newUsers = array_udiff($todayUsers, $pastActiveUsers, 'compareUsersByEmail');
// 출력 결과
echo "새로운 사용자列表:\n";
foreach ($newUsers as $user) {
echo "- {$user['email']} (ID: {$user['id']})\n";
}
새로운 사용자列表:
- alice@m66.net (ID: 101)
- carol@m66.net (ID: 103)
array_udiff () 의 비교 함수는 정수를 반환해야합니다 .
음수 : 첫 번째 매개 변수가 두 번째 매개 변수보다 작음을 의미합니다.
0 : 두 값이 동일하다는 것을 의미합니다.
양수 : 첫 번째 매개 변수가 두 번째 매개 변수보다 크다는 것을 의미합니다.
사용자 정의 비교 함수에서 배열 요소의 구조를 명확하게 이해하고 정의되지 않은 키에 액세스하지 마십시오.
이메일뿐만 아니라 ID를 기준으로 비교하려면 다음과 같은 비교 기능을 작성할 수 있습니다.
function compareUsersByIdAndEmail($a, $b) {
$emailCompare = strcmp($a['email'], $b['email']);
if ($emailCompare !== 0) {
return $emailCompare;
}
return $a['id'] <=> $b['id'];
}
Array_udiff () 에서이 함수를 사용하면보다 세련된 차이 비교를 달성 할 수 있습니다.
Array_udiff ()는 특히 구조화 된 데이터의 처리 시나리오에 적합한 매우 유연한 배열 차이 세트 비교 방법을 제공합니다. 맞춤형 비교 함수를 통해 임의의 복잡한 논리에 대한 판단을 내려 배열 처리의 자유와 표현성을 크게 향상시킬 수 있습니다.
사용자 정보, 제품 목록, 로깅 등과 같은 복잡한 비즈니스 데이터를 처리 할 때 Array_udiff () 사용을 마스터하는 것은 의심 할 여지없이 중요한 기술입니다.