首页 > 解决方案 > 在数组中分组相同的值并添加

问题描述

我在数组 $orders 中有以下内容。

Array
(
    [0] => Array
        (
            [ORDER_NUMBER] => 0001
            [NAME]         => Customer 1
            [LINE_TOTAL]   => 100.00
        )
    [1] => Array
        (
            [ORDER_NUMBER] => 0001
            [NAME]         => Customer 1
            [LINE_TOTAL]   => 300.00
        )
    [2] => Array
        (
            [ORDER_NUMBER] => 0002
            [NAME]         => Customer 2
            [LINE_TOTAL]   => 550.00
        )
    [3] => Array
        (
            [ORDER_NUMBER] => 0003
            [NAME]         => Customer 3
            [LINE_TOTAL]   => 300.00
        )
 )

我想按订单号对它们进行分组并将总行加在一起,因此最终数组看起来像这样。语言是PHP。

Array
(
    [0] => Array
        (
            [ORDER_NUMBER] => 0001
            [NAME]         => Customer 1
            [TOTAL]        => 400.00 // 300 + 100 = 400
        )
    [1] => Array
        (
            [ORDER_NUMBER] => 0002
            [NAME]         => Customer 2
            [TOTAL]        => 550.00
        )
    [2] => Array
        (
            [ORDER_NUMBER] => 0003
            [NAME]         => Customer 3
            [TOTAL]        => 300.00
        )
 )

如果有人可以提供帮助,那就太好了,我尝试了一些不同的方法,但没有得到我需要的结果。

干杯,

标签: phparrays

解决方案


这将遍历订单并根据您的 ORDER_NUMBER 将它们放在关联索引下。如果一个已经存在,它会将新的 LINE_TOTAL 添加到其中。

$orders;

$newOrders;

foreach ($orders as $order) {
    $id = $order['ORDER_NUMBER'];
    
    if(isset($newOrders[$id])){
        $newOrders[$id]['LINE_TOTAL'] += $order['LINE_TOTAL'];
    } else $newOrders[$id] = $order;
}

推荐阅读