PHP-Fusionando dos matrices en una matriz (también Elimina Duplicados)


Hola, estoy tratando de fusionar dos matrices y también quiero eliminar los valores duplicados de la matriz final.

Aquí está mi Matriz 1:

Array
    (
    [0] => stdClass Object
    (
    [ID] => 749
    [post_author] => 1
    [post_date] => 2012-11-20 06:26:07
    [post_date_gmt] => 2012-11-20 06:26:07
)

Y esta es mi matriz 2:

Array
(
[0] => stdClass Object
(
[ID] => 749
[post_author] => 1
[post_date] => 2012-11-20 06:26:07
[post_date_gmt] => 2012-11-20 06:26:07

)

Estoy usando array_merge para fusionar ambas matrices en una matriz. está dando salida como este

Array
(
[0] => stdClass Object
(
[ID] => 749
[post_author] => 1
[post_date] => 2012-11-20 06:26:07
[post_date_gmt] => 2012-11-20 06:26:07

[1] => stdClass Object
(
[ID] => 749
[post_author] => 1
[post_date] => 2012-11-20 06:26:07
[post_date_gmt] => 2012-11-20 06:26:07

)

Quiero eliminar estas entradas duplicadas o puedo eliminarlas antes de fusionarlas... Por favor, ayúdenme.. ¡Gracias!!!!!!!

Author: Suresh Maurya, 2012-11-20

5 answers

array_unique(array_merge($array1,$array2), SORT_REGULAR);

Http://se2.php.net/manual/en/function.array-unique.php

 158
Author: C. E.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-20 09:42:23

Como ya se mencionó, array_unique() podría usarse, pero solo cuando se trata de datos simples. Los objetos no son tan fáciles de manejar.

Cuando php intenta fusionar los arrays, intenta comparar los valores de los miembros del array. Si un miembro es un objeto, no puede obtener su valor y utiliza el hash spl en su lugar. Lea más sobre spl_object_hash aquí.

Simplemente se le dice si tiene dos objetos, instancias de la misma clase y si uno de ellos no es una referencia al otro-terminarás teniendo dos objetos, sin importar el valor de sus propiedades.

Para estar seguro de que no tiene duplicados dentro de la matriz combinada, en mi humilde opinión debe manejar el caso por su cuenta.

También si va a combinar matrices multidimensionales, considere usar array_merge_recursive() sobre array_merge().

 5
Author: Nikola Petkanski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-20 09:20:37

Se fusionará dos matriz y eliminar duplicado

<?php
 $first = 'your first array';
 $second = 'your second array';
 $result = array_merge($first,$second);
 print_r($result);
 $result1= array_unique($result);
 print_r($result1);
 ?>

Pruebe este enlace link1

 4
Author: Daxen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-20 09:16:25

Intenta usar el array_unique()

Esto elimina los datos duplicados dentro de la lista de sus matrices..

 3
Author: Jhonathan H.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-20 09:15:23

La fusión de dos matrices no eliminará el duplicado puede probar el siguiente ejemplo para obtener una única matriz de dos

$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"green","g"=>"blue");

$result=array_diff($a1,$a2);
print_r($result);
 0
Author: kantsverma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-06 09:28:50