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

254
18 марта 2017, 03:28

Подскажите возможно соединить массивы в один, у меня заказ записывает в одну таблицу 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
)

)

Answer 1

Просто сложите массивы:

         $arr1 = 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 "
            ]
     ) ;
    $arr2 = array(
            [
                    "order_product_id" => 52,
                    "id_order" => 52,
                    "name" => "Носки",
                    "model" => "Закрытые",
                    "quantity" => 1,
                    "total" => 25.00,
                    "oll_total" => 25.00,
            ],
            [
                    "order_product_id" => 280,
                    "id_order" => 52,
                    "name" => "Тапочки",
                    "model" => "Закрытые",
                    "quantity" => 1,
                    "total" => 25.00,
                    "oll_total" => 25.00,
            ],
    ) ;

    $result = $arr1 + $arr2;

Результат:

http://prntscr.com/ekltaa

Answer 2

всё более чем очевидно

$order['products'] = $order_product
Answer 3

Для объединения массивов можно использовать merge()
Что-то типо такого:

var arr1=[1,2,3];<br>
var arr2=["a","b","c"];<br>
$.merge(arr1, arr2);
Answer 4

Вариант 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.

READ ALSO
Фоновая игра плеера при переходе на страницы сайта на PHP

Фоновая игра плеера при переходе на страницы сайта на PHP

Рационально ли делать все переходы по страницам сайта на php + ajax для фоновой игры плеера (как в вк)?

230
Создание многоуровневого меню на Wordpress

Создание многоуровневого меню на Wordpress

Подскажите, как сделать на wordpress многоуровневое меню? Допустим есть такой массив объектов:

377
Как поменять php 5.6 на версию 7.0

Как поменять php 5.6 на версию 7.0

Как поменять php 56 на версию 7

297
Не работает SQL запрос на две таблицы

Не работает SQL запрос на две таблицы

Я использую PDOПолученный результат я вывожу через foreach

238