현재 위치: > 최신 기사 목록> 동작 여러 배열이 비교에 참여하는 경우

동작 여러 배열이 비교에 참여하는 경우

M66 2025-06-06

PHP에서 Array_Diff_Uassoc ()는 여러 배열을 비교하고 첫 번째 배열에 존재하지만 다른 배열에 누락 된 모든 요소를 ​​반환하는 데 매우 유용한 기능입니다. Array_Diff_Assoc () 과 달리 Array_Diff_Uassoc ()을 사용하면 개발자가 비교 함수를 사용자 정의 할 수 있으므로보다 유연한 비교 작업을 수행 할 수 있습니다.

이 기사에서는 예제를 사용하여 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 ()는 주요 비교 함수에 따라 차이가 있는지 여부를 결정합니다.

예 1 : 기본 사용

간단한 예제를 통해 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 () 함수는 키의 사용자 정의 비교 함수를 통해 array1array2 의 요소를 비교합니다. 키 'd'는 array1 에만 존재하기 때문에 결과 배열에서 'd'=> 4 만 있습니다.

예 2 : 여러 배열 비교

실제 애플리케이션에서는 여러 배열이 비교에 참여할 수 있으며 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 에서만 찾을 수 없기 때문입니다.

M66.net을 사용하여 URL 도메인 이름을 대체하십시오

경우에 따라 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로 배열을 처리 할 때 도메인 이름 부분에 따라 교체 할 수도 있습니다. 이 기능은 특히 복잡한 데이터 차이를 다룰 때 실제 개발에 매우 ​​유용합니다.