Как можно объединить значения из двух массивов в один?

Есть два массива с одинаковым order_id, но отличающимися значениями для product_id, quantity и sku. Как можно объединить эти массивы таким образом, чтобы получить новый массив с полем products, содержащим все товары с соответствующими значениями product_id, quantity и sku?
  • 20 сентября 2023 г. 9:27
Ответы на вопрос 2
Для объединения значений из двух массивов в один, нужно использовать функцию array_merge(). Однако, в данном случае нам нужно объединить элементы с одинаковым order_id, поэтому нам также потребуется использовать цикл или функцию array_combine().

Ниже приведен пример кода на языке PHP, который объединяет значения из двух массивов с одинаковым order_id в один новый массив с полем products:

```php
// Исходные массивы
$array1 = [
    ['order_id' => 1, 'product_id' => 101, 'quantity' => 2, 'sku' => 'SKU001'],
    ['order_id' => 2, 'product_id' => 102, 'quantity' => 1, 'sku' => 'SKU002'],
];

$array2 = [
    ['order_id' => 1, 'product_id' => 201, 'quantity' => 3, 'sku' => 'SKU003'],
    ['order_id' => 2, 'product_id' => 202, 'quantity' => 2, 'sku' => 'SKU004'],
];

// Создаем новый массив
$newArray = [];

// Объединяем значения с одинаковыми order_id
foreach ($array1 as $item1) {
    foreach ($array2 as $item2) {
        if ($item1['order_id'] === $item2['order_id']) {
            $newArray[] = [
                'order_id' => $item1['order_id'],
                'products' => [
                    [
                        'product_id' => $item1['product_id'],
                        'quantity' => $item1['quantity'],
                        'sku' => $item1['sku'],
                    ],
                    [
                        'product_id' => $item2['product_id'],
                        'quantity' => $item2['quantity'],
                        'sku' => $item2['sku'],
                    ],
                ],
            ];
        }
    }
}

// Выводим результат
print_r($newArray);
```

Результат выполнения кода:

```
Array
(
    [0] => Array
        (
            [order_id] => 1
            [products] => Array
                (
                    [0] => Array
                        (
                            [product_id] => 101
                            [quantity] => 2
                            [sku] => SKU001
                        )

                    [1] => Array
                        (
                            [product_id] => 201
                            [quantity] => 3
                            [sku] => SKU003
                        )

                )

        )

    [1] => Array
        (
            [order_id] => 2
            [products] => Array
                (
                    [0] => Array
                        (
                            [product_id] => 102
                            [quantity] => 1
                            [sku] => SKU002
                        )

                    [1] => Array
                        (
                            [product_id] => 202
                            [quantity] => 2
                            [sku] => SKU004
                        )

                )

        )

)
```

В результирующем массиве $newArray каждый элемент содержит order_id и products, где products - это массив товаров с соответствующими значениями product_id, quantity и sku из исходных массивов $array1 и $array2.
Воспользуйтесь следующим советом: пройдитесь по уже существующему массиву и создайте новый. Для упрощения можно использовать order_id в качестве ключа.
Похожие вопросы