php - 如何合并以下数组?
问题描述
我有多维数组。我需要根据 IDS 将它们组合起来并求和。每个数组包含 FIRSTID、SECONDID、TYPE 和 AMOUNT
[
[FIRSTID] => 58
[SECONDID] => 12
[TYPE] => 319
[AMOUNT] => 300
],
[
[FIRSTID] => 58
[SECONDID] => 12
[TYPE] => 319
[AMOUNT] => 600
],
[
[FIRSTID] => 59
[SECONDID] => 14
[TYPE] => 321
[AMOUNT] => 900
],
[
[FIRSTID] => 59
[SECONDID] => 14
[TYPE] => 321
[AMOUNT] => 500
],
[
[FIRSTID] => 60
[SECONDID] => 13
[TYPE] => 320
[AMOUNT] => 1000
],
[
[FIRSTID] => 60
[SECONDID] => 13
[TYPE] => 321
[AMOUNT] => 1500
]
如果 FIRSTID 、 SECONDID 和 TYPE 相同,则添加数量,否则将数组保留在结果中
预期的结果就像
[
[FIRSTID] => 58
[SECONDID] => 12
[TYPE] => 319
[AMOUNT] => 900
],
[
[FIRSTID] => 59
[SECONDID] => 14
[TYPE] => 321
[AMOUNT] => 1400
],
[
[FIRSTID] => 60
[SECONDID] => 13
[TYPE] => 320
[AMOUNT] => 1000
],
[
[FIRSTID] => 60
[SECONDID] => 13
[TYPE] => 321
[AMOUNT] => 1500
]
解决方案
现场示例在这里
$groups = array();
foreach ($array as $item) {
$key = $item['FIRSTID'].''.$item['SECONDID'].''.$item['TYPE'];
if (!array_key_exists($key, $groups))
{
$groups[$key] = array(
'FIRSTID' => $item['FIRSTID'],
'SECONDID' => $item['SECONDID'],
'TYPE' => $item['TYPE'],
'AMOUNT' => $item['AMOUNT'],
);
}
else {
$groups[$key]['AMOUNT'] = $groups[$key]['AMOUNT'] + $item['AMOUNT'];
}
}
推荐阅读
- javascript - 在 HTML 页面上显示某个部分时运行 JS
- android - Google Fit 等待多个结果
- javascript - 无法从服务器 .txt 文件中获取文件内容
- sql - 如何使用 SQL 自动递增覆盖整个列
- python-3.x - Python 模块打印正确的值,然后返回 None
- python - 比较 Python 列表中的字典并附加结果
- html - CSS 仅在有内容时显示空 DIV
- elixir - 在 Elixir 中杀死主管进程时杀死所有链接的子进程是一种好习惯吗?
- java - -D 在 -Dwebdriver.chrome.driver 中是什么意思
- android - 在 Manifest 中设置 Boolean extra