PHP合并仅具有NOT DUPLICATED值的数组

问题描述 投票:54回答:3

我需要将两个数组合并为一个数组,但我需要的是在它们共有的主数据之前删除(我的意思是重复值),合并时我只需要唯一的值。

我怎样才能做到这一点?

这是数组示例:

第一个阵列

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

第二阵列

array(3) { 
    [0]=> object(stdClass)#17 (1) { 
        ["email"]=> string(7) "[email protected]" 
    } 
    [1]=> object(stdClass)#18 (1) { 
        ["email"]=> string(6) "wefwef" 
    } 
    [2]=> object(stdClass)#19 (1) { 
        ["email"]=> string(6) "wefewf" 
    } 
} 
php arrays merge
3个回答
135
投票

你可以将array_merge()函数与array_unique()函数结合起来(两个标题都非常明显)

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

11
投票

如果我正确理解了这个问题:

 $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
)

1
投票

更快的解决方案:

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


$array = concatArrays([$array1, $array2]);
© www.soinside.com 2019 - 2024. All rights reserved.