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

56

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

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

)

Я хочу удалить эту повторяющуюся запись или удалить ее до слияния... Просьба помочь.. Спасибо!!!!!!!

  • 0
    Потому что вы хотите объединить $ array1 [0] и $ array2 [0], а не $ array1 и $ array2. Попробуйте запустить array_merge для первого элемента каждого массива
  • 0
    массив динамический .. поэтому он не всегда будет $ array1 [0] и $ array2 [0]
Показать ещё 2 комментария
Теги:
arrays
multidimensional-array

4 ответа

122
Лучший ответ
array_unique(array_merge($array1,$array2), SORT_REGULAR);

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

  • 6
    Это будет работать без SORT_REGULAR
  • 1
    Спасибо, это сработало !!! Спасибо всем
Показать ещё 5 комментариев
3

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

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

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

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

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

3

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

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

2

Будет слияние двух массивов и удаление дубликатов

<?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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню