development

NOT DUPLICATED 값만있는 PHP 병합 배열

big-blog 2021. 1. 9. 11:26
반응형

NOT DUPLICATED 값만있는 PHP 병합 배열


두 배열을 하나의 배열로 병합해야하지만 필요한 것은 공통된 주 데이터 (중복 된 값 의미) 전에 제거하는 것입니다. 병합 할 때 고유 한 값만 필요합니다.

어떻게 할 수 있습니까?

다음은 배열 예입니다.

첫 번째 어레이

array(3) { 
    [0]=> object(stdClass)#17 (1) { 
        ["email"]=> string(7) "gffggfg" 
    } 
    [1]=> object(stdClass)#18 (1) { 
        ["email"]=> string(6) "wefwef@test.it" 
    } 
    [2]=> object(stdClass)#19 (1) { 
        ["email"]=> string(6) "wefewf" 
    } 
} 

두 번째 어레이

array(3) { 
    [0]=> object(stdClass)#17 (1) { 
        ["email"]=> string(7) "gffggfg@test.it" 
    } 
    [1]=> object(stdClass)#18 (1) { 
        ["email"]=> string(6) "wefwef" 
    } 
    [2]=> object(stdClass)#19 (1) { 
        ["email"]=> string(6) "wefewf" 
    } 
} 

array_merge()함수와 함수를 결합 할 수 있습니다 array_unique()(두 제목 모두 매우 자명합니다)

$array = array_unique (array_merge ($array1, $array2));

질문을 올바르게 이해 한 경우 :

 $a1 = Array(1,2,3,4);
 $a2 = Array(4,5,6,7);
 $array =  array_diff(array_merge($a1,$a2),array_intersect($a1,$a2));
 print_r($array);

반환

Array
(
[0] => 1
[1] => 2
[2] => 3
[5] => 5
[6] => 6
[7] => 7
)

더 빠른 솔루션 :

function concatArrays($arrays){
    $buf = [];
    foreach($arrays as $arr){
        foreach($arr as $v){
            $buf[$v] = true;
        }
    }
    return array_keys($buf);
}


$array = concatArrays([$array1, $array2]);

약간 늦게 대답했지만 배열 통합 연산자 +가 작업을 상당히 많이 수행한다는 것을 알았습니다 ( 여기 3 섹션에서 찾았 습니다 ).

$array1 + $array2 = $array //if duplicate found, the value in $array1 will be considered ($array2 value for array_merge, if keys clearly specified)

참조 URL : https://stackoverflow.com/questions/10572546/php-merge-arrays-with-only-not-duplicated-values

반응형