Создайте многомерный массив из двух других значений многомерного массива

#php #multidimensional-array

Вопрос:

Надеюсь, кто-нибудь сможет мне помочь 🙂

У меня есть два массива информации о продуктах дистрибьютора из разных источников данных, но с одинаковой структурой. Они хранятся в коде как переменные $distro1Products и $distro2Products.

Дистрибутив1:

     [MZ-V7S500BW] => Array
        (
            [wooCode] => 13220
            [price] => 74.00
            [quantity] => 25
        )
     [...] => Array (.......)
     MZ-V7S500BW - distro product code
 

Дистрибутив2:

     [1256421] => Array
        (
            [wooCode] => 13220
            [price] => 82.84
            [quantity] => 50
        )
    [...] => Array (.......)
    1256421- distro product code


 

Что я хочу сделать, так это сгенерировать новый массив из обоих результатов массива, что-то вроде этого

     [13220] => Array
        (
            [price] => 74.00
            [quantity] => 25
        )
 

Я не знаю, могу ли я попросить помощи с логикой — скрипт должен выбрать более дешевую запись (в данном случае — из дистрибутива 1), но он также должен проверить, есть ли товар на складе (количество > 0), и если обеих записей нет в наличии, просто верните 0.
Что мне действительно действительно нужно прямо сейчас, так это способ создания нового многомерного массива из существующих двух многомерных массивов, также у меня есть планы интеграции третьего дистрибутива, поэтому расширяемость кода была бы очень приятной 🙂

Заранее спасибо! ♥

Ответ №1:

Это работает :

 $distro1Products = [
    'MZ-V7S500BW' => [
        'wooCode' => 13220,
        'price' => 74.00,
        'quantity' => 25
    ]
];
        
$distro2Products = [
    13220 => [
        'price' => 74.00,
        'quantity' => 25
    ]
];

$fusion = array_merge(...array_map(function($code, $tab) use($distro2Products) {
    $wooCode = $tab['wooCode'];
    return [$wooCode => $distro2Products[$wooCode]];
}, array_keys($distro1Products), $distro1Products));
 

?
Цель состоит в том, чтобы найти, как установить связь между значением «wooCode» из первого массива и ключом из второго массива. Когда у вас появится ассоциация, вы сможете построить свой массив.