2012-05-13 4 views
34

Tôi cần kết hợp hai mảng thành 1 mảng nhưng những gì tôi cần là xóa trước dữ liệu chính mà chúng có chung (giá trị nhân bản i), tôi chỉ cần giá trị duy nhất khi đã hợp nhất.Mảng kết hợp PHP chỉ với các giá trị NOT DUPLICATED

Tôi có thể làm điều đó bằng cách nào?

Đây là ví dụ mảng:

mảng Đầu tiên

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

mảng thứ hai

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

thể trùng lặp của [Bắt giá trị duy nhất từ ​​2 mảng] (http: // stackoverflow.com/questions/3507419/getting-unique-values-from-2-arrays) - vui lòng sử dụng tìm kiếm trước khi bạn đặt câu hỏi mới. –

Trả lời

86

Bạn có thể kết hợp array_merge() chức năng với array_unique() chức năng (cả hai danh hiệu là khá tự giải thích)

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

cũng như tôi có thể thấy array_merge() dường như không tính toán trùng lặp để array_unique() không được chấp nhận trong trường hợp của tôi hay không!? – sbaaaang

+1

'array_merge()' không thêm các khóa trùng lặp, nhưng khi bạn có các giá trị trùng lặp với các khóa khác nhau, nó sẽ thêm những số đó – Jeroen

+0

wonderfull tôi chỉ cần array_merge() vì tôi luôn có cùng một khóa cả trong tất cả các mảng, thực sự là thx! – sbaaaang

11

Nếu tôi hiểu câu hỏi một cách chính xác:

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

trở

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

xin lỗi tôi đã quên mất tôi có mảng đa mảng không phải mảng đơn giản – sbaaaang

0

nhanh hơn giải pháp:

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


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