我有以下数组:
array:2 [▼
0 => array:2 [▼
"id" => 3
"total" => 2
]
1 => array:2 [▼
"id" => 4
"total" => 1
]
]
和
array:2 [▼
0 => array:2 [▼
"id" => 3
"total" => 5
]
1 => array:2 [▼
"id" => 4
"total" => 5
]
2 => array:2 [▼
"id" => 5
"total" => 2
]
]
我需要将它们合并在一起,保持id并对结果求和,所以我得到结果数组:
array:2 [▼
0 => array:2 [▼
"id" => 3
"total" => 7
]
1 => array:2 [▼
"id" => 4
"total" => 6
]
2 => array:2 [▼
"id" => 5
"total" => 2
]
]
这些数组来自使用toArray()方法的laravel数据库查询,因此欢迎包含laravel默认收集方法的答案。
答案 0 :(得分:0)
试试这个
arr3 = arr1->merge(arr2);
arr3->map(function(itemM)use(arr1, arr2){
return itemM->total = arr1->sum(function(itemS)use(itemM){
return itemS->id == itemM->id ? itemS->total : 0;
}) +
arr2->sum(function(itemS)use(itemM){
return itemS->id == itemM->id ? itemS->total : 0;
});
})