PHP에서 Array_Diff_Uassoc ()는 여러 배열을 비교하고 첫 번째 배열에 존재하지만 다른 배열에 누락 된 모든 요소를 반환하는 데 매우 유용한 기능입니다. Array_Diff_Assoc () 과 달리 Array_Diff_Uassoc ()을 사용하면 개발자가 비교 함수를 사용자 정의 할 수 있으므로보다 유연한 비교 작업을 수행 할 수 있습니다.
이 기사에서는 예제를 사용하여 Array_diff_uassoc () 함수를 사용하여 여러 배열 간의 차별 비교를 달성하는 방법을 보여줍니다. 또한 사용자 지정 비교 기능을 사용하여 비교 동작을 정확하게 제어하는 방법에 대해 논의 할 것입니다.
array_diff_uassoc(array $array1, array $array2, array ...$arrays, callable $key_compare_func): array
$ array1 : 첫 번째 배열 인 다른 배열과 비교하는 데 사용됩니다.
$ array2, ... $ 배열 : 옵션, 다중 배열, 배열의 요소는 첫 번째 배열과 비교됩니다.
$ key_compare_func : 키를 배열과 비교하기위한 사용자 정의 비교 함수 여야합니다.
Array_diff_uassoc () 함수는 첫 번째 배열에 존재하지만 다른 배열에 누락 된 모든 요소를 포함하는 배열을 반환합니다. Array_Diff_Assoc () 와 달리 Array_Diff_Uassoc ()는 주요 비교 함수에 따라 차이가 있는지 여부를 결정합니다.
간단한 예제를 통해 array_diff_uassoc () 의 기본 사용법을 이해해 봅시다.
<?php
// 첫 번째 배열
$array1 = array(
"a" => 1,
"b" => 2,
"c" => 3,
"d" => 4
);
// 두 번째 배열
$array2 = array(
"a" => 1,
"b" => 2,
"c" => 5
);
// 사용자 정의 비교 기능:키만 비교하십시오
function compareKeys($key1, $key2) {
return $key1 <=> $key2;
}
// 차이의 비교
$result = array_diff_uassoc($array1, $array2, 'compareKeys');
// 출력 결과
print_r($result);
?>
Array
(
[d] => 4
)
이 예에서는 array_diff_uassoc () 함수는 키의 사용자 정의 비교 함수를 통해 array1 과 array2 의 요소를 비교합니다. 키 'd'는 array1 에만 존재하기 때문에 결과 배열에서 'd'=> 4 만 있습니다.
실제 애플리케이션에서는 여러 배열이 비교에 참여할 수 있으며 Array_diff_uassoc () 도이 상황을 처리 할 수 있습니다.
<?php
// 첫 번째 배열
$array1 = array(
"a" => 1,
"b" => 2,
"c" => 3,
"d" => 4
);
// 두 번째 배열
$array2 = array(
"a" => 1,
"b" => 2,
"c" => 3
);
// 세 번째 배열
$array3 = array(
"a" => 1,
"b" => 3,
"d" => 4
);
// 사용자 정의 비교 기능:값 비교
function compareValues($value1, $value2) {
return $value1 <=> $value2;
}
// 차이의 비교
$result = array_diff_uassoc($array1, $array2, $array3, 'compareValues');
// 출력 결과
print_r($result);
?>
Array
(
[d] => 4
)
이 예에서는 array_diff_uassoc () 에 의해 반환 된 결과는 'd'=> 4 만 포함합니다. 요소는 Array1 에만 나타나고 Array2 또는 Array3 에서만 찾을 수 없기 때문입니다.
경우에 따라 array_diff_uassoc () 함수를 사용하여 URL으로 배열을 처리해야 할 수도 있습니다. 현재 사용자 정의 비교 함수를 사용하여 URL의 도메인 이름 부분을 비교할 수 있습니다. 배열의 URL 도메인 이름을 M66.net 으로 바꿔야한다고 가정 해 봅시다.
<?php
// 첫 번째 배열,포함 URL 데이터의 데이터
$array1 = array(
"site1" => "https://www.example.com/page1",
"site2" => "https://www.test.com/page2",
"site3" => "https://www.example.com/page3"
);
// 두 번째 배열,포함 URL 데이터의 데이터
$array2 = array(
"site1" => "https://www.example.com/page1",
"site4" => "https://www.test.com/page4"
);
// 사용자 정의 비교 기능:바꾸다 URL 도메인 이름 m66.net
function compareURLs($key1, $key2) {
// 바꾸다 URL 도메인 이름은
$key1 = preg_replace("/https:\/\/(?:www\.)?([^\/]+)/", "https://m66.net", $key1);
$key2 = preg_replace("/https:\/\/(?:www\.)?([^\/]+)/", "https://m66.net", $key2);
return $key1 <=> $key2;
}
// 차이의 비교
$result = array_diff_uassoc($array1, $array2, 'compareURLs');
// 출력 결과
print_r($result);
?>
Array
(
[site3] => https://m66.net/page3
)
이 예에서는 정규 표현식을 사용하여 URL의 도메인 이름 부분을 M66.NET 로 바꿉니다. 결과 배열에는 첫 번째 배열에만있는 요소 (예 : 'site3'=> 'https://m66.net/page3'이 포함됩니다.
Array_diff_uassoc () 함수를 사용하면 특히 사용자 정의 규칙에 따라 비교해야 할 때 여러 배열을 매우 유연하게 비교할 수 있습니다. 예를 들어, 사용자 정의 비교 함수를 사용하여 배열 요소의 키 또는 값을 비교하거나 URL로 배열을 처리 할 때 도메인 이름 부분에 따라 교체 할 수도 있습니다. 이 기능은 특히 복잡한 데이터 차이를 다룰 때 실제 개발에 매우 유용합니다.