2012-05-13 15 views
34

Necesito unir dos matrices en una matriz, pero lo que necesito es eliminar antes de los datos principales que no tienen en común (me refiero a valores duplicados), solo necesito valores únicos cuando fusionada.matrices de combinación PHP con solo valores NO DUPLICADOS

¿Cómo puedo hacer eso?

Este es el ejemplo de matriz:

primera matriz

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

segunda matriz

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

posible duplicado de [Obtener valores únicos de 2 arrays] (http: // stackoverflow.com/questions/3507419/getting-unique-values-from-2-arrays) - utilice la búsqueda antes de hacer una nueva pregunta. –

Respuesta

86

Puede combinar la función array_merge() con la función array_unique() (ambos títulos son bastante auto-explicativo)

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

y veo que array_merge() no parece calcular los duplicados, por lo que array_unique() está en desuso en mi caso o no. – sbaaaang

+1

'array_merge()' no agrega claves duplicadas, pero cuando tiene valores duplicados con claves diferentes, agrega esos – Jeroen

+0

maravillosos solo necesito array_merge() porque siempre tengo la misma clave en todas las matrices, ¡de verdad! – sbaaaang

11

Si entiendo bien la pregunta:

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

retorno

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

lo siento, olvidé que tengo una matriz multinivel no una matriz simple – sbaaaang

0

más rápida solución:

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


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