it-swarm.com.ru

PHP - Объединение двух массивов в один массив (также удаление дубликатов)

Привет, я пытаюсь объединить два массива, а также хочу удалить повторяющиеся значения из окончательного массива.

Вот мой массив 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
)

И это мой массив 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

)

Я использую array_merge для объединения обоих массивов в один массив. это дает вывод, как это

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

)

Я хочу удалить эти дубликаты или я могу удалить их до слияния ... Пожалуйста, помогите .. Спасибо !!!!!!!

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

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

179
C. E.

Как уже упоминалось, array_unique () можно использовать, но только при работе с простыми данными. Объекты не так просты в обращении.

Когда php пытается объединить массивы, он пытается сравнить значения членов массива. Если элемент является объектом, он не может получить его значение и вместо этого использует Spl-хэш. Узнайте больше о spl_object_hash здесь.

Проще говоря, если у вас есть два объекта, экземпляры одного и того же класса, и если один из них не является ссылкой на другой - у вас получится два объекта, независимо от значения их свойств.

Чтобы быть уверенным, что у вас нет дубликатов в объединенном массиве, Imho, вы должны обработать случай самостоятельно.

Также, если вы собираетесь объединять многомерные массивы, рассмотрите возможность использования array_merge_recursive () over array_merge () .

5
Nikola Petkanski

Это объединит два массива и удалит дубликаты

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

Попробуйте эту ссылку link1

4
Daxen

попробуйте использовать array_unique()

это исключает дублирование данных в списке ваших массивов ..

3
Jhonathan H.

Объединение двух массивов не приведет к удалению дубликата, вы можете попробовать следующий пример, чтобы получить уникальный из двух массивов 

$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
kantsverma