2012-05-13 19 views
34

मुझे दो सरणी को 1 सरणी में मर्ज करने की आवश्यकता है, लेकिन मुझे जो मुख्य डेटा है वह सामान्य डेटा (डुप्लिकेट मानों का मतलब है) से पहले निकालना है, मुझे केवल अनन्य मान चाहिए विलय होना।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

(http [2 सरणियों से अद्वितीय मान रही] के संभावित डुप्लिकेट: // stackoverflow.com/questions/3507419/getting-unique-values-from-2-arrays) - कृपया एक नया प्रश्न पूछने से पहले खोज का उपयोग करें। –

उत्तर

86

आप (array_unique() समारोह के साथ array_merge() समारोह को जोड़ सकते हैं दोनों खिताब सुंदर स्वतः स्पष्ट हैं)

$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

तेज़ समाधान:

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


$array = concatArrays([$array1, $array2]); 
संबंधित मुद्दे