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
)
Я хочу удалить эти повторяющиеся записи или могу удалить их перед объединением... Мольбы о помощи.. Спасибо!!!!!!!
5 answers
array_unique(array_merge($array1,$array2), SORT_REGULAR);
Как уже упоминалось, array_unique() можно использовать, но только при работе с простыми данными. С этими объектами не так просто обращаться.
Когда php пытается объединить массивы, он пытается сравнить значения элементов массива. Если элемент является объектом, он не может получить его значение и вместо этого использует хэш spl. Подробнее о spl_object_hash читайте здесь.
Просто сказал, есть ли у вас два объекта, экземпляры одного и того же класса, и если один из них не является ссылка на другой - в итоге у вас будет два объекта, независимо от значения их свойств.
Чтобы быть уверенным, что у вас нет дубликатов в объединенном массиве, Imho вам следует разобраться с этим делом самостоятельно.
Также, если вы собираетесь объединить многомерные массивы, рассмотрите возможность использования array_merge_recursive() вместо array_merge().
Он объединит два массива и удалит дубликаты
<?php
$first = 'your first array';
$second = 'your second array';
$result = array_merge($first,$second);
print_r($result);
$result1= array_unique($result);
print_r($result1);
?>
Попробуйте перейти по этой ссылке ссылка 1
Попробуйте использовать array_unique()
Это удаляет дублированные данные внутри списка ваших массивов..
Слияние двух массивов не приведет к удалению дубликата. Вы можете попробовать приведенный ниже пример, чтобы получить уникальный из двух массивов
$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);