2012-05-13 513 views
34

我需要兩個數組合併成1個數組,但我需要的是主數據之前刪除他們b超視距的共同點(重複值我的意思),我只需要在唯一值合併。PHP合併陣列,只有不重複值

我該怎麼做?

這是數組例如:

第一陣列

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" 
    } 
} 
+0

可能重複:// stackoverflow.com/questions/3507419/getting-unique-values-from-2-arrays) - 請使用搜索你問一個新問題之前。 –

回答

86

您可以將array_merge()功能與array_unique()功能組合(包括標題是不言自明)

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

以及我可以看到array_merge(),所以array_unique()在我的情況不建議使用與否似乎不計算重複!? – sbaaaang

+1

'array_merge()'不添加重複鍵,但是當你有重複的值使用不同的密鑰,它不添加這些 – Jeroen

+0

完美的事情,我只需要array_merge()因爲我始終相同的密鑰在所有陣列,真是THX! – sbaaaang

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 
) 
+0

對不起,我忘了我已經多級陣列不是簡單的數組重設密鑰 – sbaaaang

0

更快溶液:從2個數組獲取唯一值](HTTP的

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


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