Я работал над 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 каждый раз отвечает мне ошибками и предупреждениями.
Моей целью было бы объединить оба массива в один, удалив дубликаты на основе элемента «имя».
Я благодарю всех, кто мог бы мне помочь, я застрял.






Есть разные способы сделать это. Одна из возможностей — использовать идентификаторы из первого массива для фильтрации второго массива перед слиянием.
Получить идентификаторы:
$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));