현재 위치: > 최신 기사 목록> array_intersect_uassoc 함수와 복잡한 다차원 배열을 비교하고 필터링하는 실용적인 방법

array_intersect_uassoc 함수와 복잡한 다차원 배열을 비교하고 필터링하는 실용적인 방법

gitbox 2025-06-16

PHP에서 array_intersect_uassoc 함수는 개발자가 특히 복잡한 다차원 배열을 처리 할 때 두 개 이상의 배열을 비교하고 필터링 할 수있는 매우 강력한 도구입니다. 이 기능을 통해 사용자 정의 콜백 함수를 기반으로 배열의 키와 값을 비교 한 다음 조건을 충족하는 배열 항목을 얻을 수 있습니다. 이 기사에서는 array_intersect_uassoc을 사용하여 복잡한 다차원 배열을 처리하고 실제 시나리오를 기반으로 응용 프로그램 예제를 제공하는 방법을 심층적으로 탐색합니다.

array_intersect_uassoc 함수 소개

Array_intersect_uassoc 함수는 두 개 이상의 배열 사이의 교차점을 반환하며, 이는 사용자 정의 키 값 비교 함수를 기반으로 비교됩니다. 함수는 다음과 같이 정의됩니다.

 array_intersect_uassoc(array $array1, array $array2, callable $value_func)

매개 변수 설명 :

  • $ array1 : 첫 번째 배열.

  • $ array2 : 두 번째 배열.

  • $ value_func : 어레이의 키와 값을 비교하기위한 사용자 정의 콜백 함수.

이 기능은 배열의 값 만 비교하는 일반 array_intersect 와 다르며 Array_intersect_uassoc를 사용하면 키와 값의 일치를 비교하기 위해 사용자 정의 기능을 지정할 수 있습니다.

시나리오를 사용하십시오

종종 다차원 배열을 다룰 때 더 미세한 필터링을 수행 해야하는 상황, 특히 배열 값의 일치뿐만 아니라 배열의 키 또는 복잡한 조건에 더 관심이있을 때 상황이 발생합니다. Array_intersect_uassoc 은 이러한 문제를 해결하기위한 이상적인 도구입니다.

예를 들어, 전자 상거래 플랫폼의 데이터 처리에서 가격, 수량, SKU 및 기타 두 가지 어레이에서 다른 조건과 일치하는 제품 정보를 필터링해야 할 수도 있습니다. 현재 array_intersect_uassoc 의 역할은 무시할 수 없습니다.

실제 사례 : 두 가지 제품 목록을 비교합니다

다른 제품에 대한 자세한 정보가 포함 된 2 개의 다차원 배열이 있다고 가정합니다. SKU 및 제품 가격 과 같은 특정 일반적인 조건에 따라이 두 어레이에서 동일한 제품을 필터링해야합니다.

샘플 데이터

 $array1 = [
    101 => ['sku' => 'A123', 'price' => 100, 'name' => 'Product 1'],
    102 => ['sku' => 'B234', 'price' => 150, 'name' => 'Product 2'],
    103 => ['sku' => 'C345', 'price' => 200, 'name' => 'Product 3'],
];

$array2 = [
    201 => ['sku' => 'A123', 'price' => 100, 'name' => 'Product 1'],
    202 => ['sku' => 'B234', 'price' => 140, 'name' => 'Product 2'],
    203 => ['sku' => 'D456', 'price' => 250, 'name' => 'Product 4'],
];

Array_intersect_uassoc을 사용하여 일치하는 제품을 필터링하십시오

SKU가격이 동일인지 비교하려면 콜백 기능이 필요합니다.

 function compare_product($a, $b) {
    // 비교하다 sku 그리고 price
    return ($a['sku'] === $b['sku'] && $a['price'] === $b['price']) ? 0 : 1;
}

$result = array_intersect_uassoc($array1, $array2, 'compare_product');

print_r($result);

출력 결과 :

 Array
(
    [101] => Array
        (
            [sku] => A123
            [price] => 100
            [name] => Product 1
        )
)

이 예에서는 Compare_Product 함수를 사용자 정의하고 Array_Intersect_uassoc은 두 어레이의 제품 SKU가격이 동일 한 경우에만 이러한 일치하는 제품을 유지합니다.

응용 프로그램 시나리오 확장

1. 복잡한 조건에 따라 필터

Array_intersect_uassoc는 여러 속성을 기반으로 배열을 비교하고 필터링해야 할 때 매우 유용한 도구입니다. 예를 들어, 제품의 SKU , 가격이름을 동시에 비교하려면 콜백 기능을 조정하십시오.

 function compare_complex_product($a, $b) {
    return ($a['sku'] === $b['sku'] && $a['price'] === $b['price'] && $a['name'] === $b['name']) ? 0 : 1;
}

2. 여러 배열의 필터 교차

Array_intersect_uassoc은 두 배열의 비교에 적합 할뿐만 아니라 여러 배열에서 교차로 필터링을 수행 할 수도 있습니다. 예를 들어, 3 개 이상의 배열을 비교해야 할 때이 함수를 사용하고 더 많은 배열을 매개 변수로 전달할 수 있습니다.

 $array3 = [
    301 => ['sku' => 'A123', 'price' => 100, 'name' => 'Product 1'],
    302 => ['sku' => 'C345', 'price' => 200, 'name' => 'Product 3'],
];

$result = array_intersect_uassoc($array1, $array2, $array3, 'compare_product');

요약

Array_intersect_uassoc 은 복잡한 다차원 배열을 처리하기위한 강력한 도구입니다. 사용자 정의 콜백 함수를 사용하여 키 값을 기반으로 배열을 비교하여 기준을 충족하는 항목을 쉽게 필터링 할 수 있습니다. 간단한 키 가치 비교 또는 복잡한 다차원 배열 필터링을 처리하든 많은 유연성과 도움을 제공합니다.

이 기능을 사용하지 않은 경우 실제 프로젝트에 적용하여 복잡한 데이터 처리 문제를 해결할 수도 있습니다.