Слияние двух многомерных массивов с удалением дубликатов, опираясь на конкретный их элемент

Я работал над Facebook API. У меня есть этот массив:

["data"] => Array(31) {
    [0] => Array(6) {
        ["id"] => String(13) "6003110325672"
        ["name"] => String(17) "Cristiano Ronaldo"
        ["audience_size"] => Integer  122006620
        ["path"] => Array(3) {
            [0] => String(9) "Interessi"
            [1] => String(20) "Interessi aggiuntivi"
            [2] => String(17) "Cristiano Ronaldo"
        }
        ["description"] => NULL
        ["topic"] => String(6) "People"
    }
    [1] => Array(6) {
        ["id"] => String(13) "6003114817426"
        ["name"] => String(10) "Ronaldinho"
        ["audience_size"] => Integer  17910990
        ["path"] => Array(3) {
            [0] => String(9) "Interessi"
            [1] => String(20) "Interessi aggiuntivi"
            [2] => String(10) "Ronaldinho"
        }
        ["description"] => NULL
        ["topic"] => String(6) "People"
    }

который продолжается с дополнительными индексами. Тогда у меня есть этот:

["data"] => Array(45) {
    [0] => Array(11) {
        ["id"] => String(13) "6003129962717"
        ["name"] => String(16) "Zinédine Zidane"
        ["type"] => NULL
        ["path"] => NULL
        ["description"] => NULL
        ["source"] => NULL
        ["partner"] => NULL
        ["audience_size"] => Integer  14137830
        ["country"] => NULL
        ["country_access"] => NULL
        ["topic"] => NULL
    }
    [1] => Array(11) {
        ["id"] => String(13) "6003115921142"
        ["name"] => String(13) "Thierry Henry"
        ["type"] => NULL
        ["path"] => NULL
        ["description"] => NULL
        ["source"] => NULL
        ["partner"] => NULL
        ["audience_size"] => Integer  2601710
        ["country"] => NULL
        ["country_access"] => NULL
        ["topic"] => NULL
    }
    [2] => Array(11) {
        ["id"] => String(13) "6003114817426"
        ["name"] => String(10) "Ronaldinho"
        ["type"] => NULL
        ["path"] => NULL
        ["description"] => NULL
        ["source"] => NULL
        ["partner"] => NULL
        ["audience_size"] => Integer  17910990
        ["country"] => NULL
        ["country_access"] => NULL
        ["topic"] => NULL
    }

который, как и первый, идет с дополнительными индексами.

Сначала я попытался объединить массивы с помощью array_merge(), но это не сработало, потому что я потерял часть данных внутри них. Поэтому я хотел бы объединить их правильно. Затем я заметил, что во втором у меня есть элемент «Роналдиньо» как дубликат (2nd array index 2 и 1st array index 1). Я перепробовал почти все, чтобы понять, как удалить то первое, то второе в объединенном, но PHP каждый раз отвечает мне ошибками и предупреждениями.

Моей целью было бы объединить оба массива в один, удалив дубликаты на основе элемента «имя».

Я благодарю всех, кто мог бы мне помочь, я застрял.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть разные способы сделать это. Одна из возможностей — использовать идентификаторы из первого массива для фильтрации второго массива перед слиянием.

Получить идентификаторы:

$ids = array_flip(array_column($first, 'id'));

Создайте фильтр:

$distinct = function($item) use ($ids) { return !isset($ids[$item['id']]); };

Фильтровать и объединять:

$result = array_merge($first, array_filter($second, $distinct));

Другие вопросы по теме