#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» из первого массива и ключом из второго массива. Когда у вас появится ассоциация, вы сможете построить свой массив.