Страницы

Поиск по вопросам

суббота, 13 июля 2019 г.

Объединить массив в один

Подскажите возможно соединить массивы в один, у меня заказ записывает в одну таблицу order, а товар в order_product.
order
Array ( [0] => Array( [order_id] => 52 [firstname] => test [lastname] => tst [email] => Test [telephone] => test [payment_address_1] => Отделение №1: ул. Гагарина,22 [payment_method] => Новая почта [date_added] => 2017-03-15 15:51:44 [date_modified] => 2017-03-15 15:51:44 ) )
order_product
Array ( [0] => Array ( [order_product_id] => 281 [id_order] => 52 [name] => Тапочки [model] => Закрытые [quantity] => 1 [total] => 25.00 [oll_total] => 25.00 )
[1] => Array ( [order_product_id] => 280 [id_order] => 52 [name] => Носки [model] => Закрытые [quantity] => 1 [total] => 20.50 [oll_total] => 20.50 )
Возможно получить массив такова вида
Array ( [0] => Array( [order_id] => 52 [firstname] => test [lastname] => tst [email] => Test [telephone] => test [payment_address_1] => Отделение №1: ул. Гагарина,22 [payment_method] => Новая почта [name] => Тапочки,Носки [oll_total] => 25.00+20,05 [date_added] => 2017-03-15 15:51:44 [date_modified] => 2017-03-15 15:51:44 )
)


Ответ

Вариант 1. Запрос в базу. Пример для MySQL:
SELECT o.*, GROUP_CONCAT(op.name SEPARATOR ', ') AS name, SUM(op.oll_total) AS oll_total FROM order_table o LEFT JOIN order_product_table op ON op.order_product_id = o.order_id GROUP BY o.order_id
Вариант 2. Цикл в PHP, если у вас 2 массива
$result = []; foreach ($orders as $key => $order) { $result[$key] = $order + ['name' => [], 'oll_total' => 0]; foreach ($order_products as $key2 => $product) { if ($product['order_product_id'] == $order['order_id']) { $result[$key]['name'][] = $product['name']; $result[$key]['oll_total'] += $product['oll_total']; } } $result[$key]['name'] = implode(', ', $result[$key]['name']); }
Готовой функции нет. В вашем конкретном случае я бы выбрала вариант 1.

Комментариев нет:

Отправить комментарий