Совокупные значения в многомерном массиве PHP - PullRequest
0 голосов
/ 01 мая 2020

С самого начала у меня есть список заказов следующим образом:

                (
                    [product_id] => 1094
                    [total_weight] => 0.0390
                    [qty_ordered] => 10.0000
                    [category_id] => 12
                )

Я хочу суммировать значения для total_weight и qty_ordered на основе category_id

Мне удалось получить массив следующим образом, используя foreach. Но мне нужно как-то агрегировать значения.

Array
(
    [14] => Array
        (
            [0] => Array
                (
                    [product_id] => 1099
                    [total_weight] => 0.0390
                    [qty_ordered] => 10.0000
                )
            [1] => Array
                (
                    [product_id] => 1095
                    [total_weight] => 0.0395
                    [qty_ordered] => 10.0000
                )
        )
    [12] => Array
        (
            [0] => Array
                (
                    [product_id] => 1094
                    [total_weight] => 0.0390
                    [qty_ordered] => 10.0000
                )
        )
    [15] => Array
        (
            [0] => Array
                (
                    [product_id] => 742
                    [total_weight] => 0.1250
                    [qty_ordered] => 1.0000
                )
        )
)

Так что в идеале я хотел бы, чтобы результат был таким, как показано ниже, с как можно меньшим количеством кода:

Array
(
    [14] => Array
        (
            [total_weight] => 0.0785
            [qty_ordered] => 20.0000
        )

    [12] => Array
        (
            [total_weight] => 0.0390
            [qty_ordered] => 10.0000
        )

    [15] => Array
        (
            [total_weight] => 0.1250
            [qty_ordered] => 1.0000
        )
)

1 Ответ

1 голос
/ 01 мая 2020

Мне удалось отсортировать его следующим образом.

    foreach($retval as $val) {
        $return[$val['category_id']]['qty_ordered'] += $val['qty_ordered'];
        $return[$val['category_id']]['row_total'] += $val['row_total'];
    }
...