php - 在数组中分组相同的值并添加
问题描述
我在数组 $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
)
)
如果有人可以提供帮助,那就太好了,我尝试了一些不同的方法,但没有得到我需要的结果。
干杯,
解决方案
这将遍历订单并根据您的 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;
}