Задать вопрос
the_lord_of_the_king
@the_lord_of_the_king

Как объединить массив с массивами по ключу?

62595776973ac760437105.png
625957b11102c769751511.png
Как объединить два массива с массивами, чтобы в результате получился третий массив? Объединить по ключу "product".
$array = [
            0 => [
                'product' => 'Мирт в стеклянном цилиндре',
                'local_link' => 'localhost/catalog/mirt-v-steklyannom-tsilindre',
                'remote_link' => '/item/mirt-v-steklyannom-tsilindre'
            ],
            1 => [
                'product' => 'Панно прозрачное с синим Лимониумом',
                'local_link' => 'localhost/catalog/panno-prozrachnoe-s-sinim-limoniumom',
                'remote_link' => '/item/panno-prozrachnoe-s-sinim-limoniumom'
            ]
        ];
  • Вопрос задан
  • 82 просмотра
Подписаться 1 Простой Комментировать
Решение пользователя Rsa97 К ответам на вопрос (2)
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
$localKeys = array_column($arr1, 'product');
$remoteKeys = array_column($arr2, 'product');
$totalKeys = array_values(array_unique(array_merge($localKeys, $remoteKeys)));

$localLinks = array_combine(
    $localKeys,
    array_column($arr1, 'local_link')
);
$remoteLinks = array_combine(
    $remoteKeys,
    array_columns($arr2, 'remote_link')
);

$result = array_map(
    fn($key) => [
        'product' => $key,
        'local_link' => $localLinks[$key] ?? null,
        'remote_link' => $remoteLinks[$key] ?? null
    ]
);
Ответ написан