php - 如何对具有按类别排序的相同键的数组的值求和?
问题描述
category
:
array:3 [▼
"78f895684c" => "blue"
"f71db561ba" => "green"
"3e231651de" => "blue"
]
numbersGroup:
array:3 [▼
0 => array:4 [▼
"uuid" => "78f895684c"
"price" => "10"
"discount" => "0"
"total" => "10.00"
]
1 => array:4 [▼
"uuid" => "f71db561ba"
"price" => "2"
"discount" => "0"
"total" => "2.00"
]
2 => array:4 [▼
"uuid" => "3e231651de"
"price" => "50"
"discount" => "10"
"total" => "40.00"
]
]
我尝试创建一个数组,将我的项目分类,但也将一个类别中的所有项目加在一起。这就是我所拥有的:
foreach ($numbersGroup as $group) {
$cat = $category[$group['uuid']];
unset($group['uuid']);
$numbersArray[$cat][] = $group;
}
结果:
array:2 [▼
"blue" => array:2 [▼
0 => array:3 [▼
"price" => "10"
"discount" => "0"
"total" => "10.00"
]
1 => array:3 [▼
"price" => "50"
"discount" => "10"
"total" => "40.00"
]
]
"green" => array:1 [▼
0 => array:3 [▼
"price" => "2"
"discount" => "0"
"total" => "2.00"
]
]
]
这就是我想要实现的目标:
array:2 [▼
"blue" => array:2 [▼
0 => array:3 [▼
"price" => "60"
"discount" => "10"
"total" => "50.00"
]
]
"green" => array:1 [▼
0 => array:3 [▼
"price" => "2"
"discount" => "0"
"total" => "2.00"
]
]
]
这是我的方法:
foreach ($numbersGroup as $group) {
$cat = $category[$group['uuid']];
unset($group['uuid']);
foreach ($group as $key => $value) {
$sum += $value;
}
$numbersArray[$cat][] = $sum;
}
但我得到了错误:
不支持的操作数类型
解决方案
你可以试试下面的代码
foreach ($numbersGroup as $group) {
$cat = $category[$group['uuid']];
if(!isset( $numbersArray[$cat][0]) )
$numbersArray[$cat][] = $group;
else{
// If index is known, you can use below code
/*$numbersArray[$cat][0]["price"]+= $group['price'];
$numbersArray[$cat][0]["discount"]+= $group['discount'];
$numbersArray[$cat][0]["total"]+= $group['total'];*/
// If index is not known
foreach($group as $key => $value){
if (is_numeric($value)) {
$numbersArray[$cat][0][$key]+= $group[$key];
}
}
}
}
现在我添加了数组索引未知的情况。在添加值之前,我们需要进行数字检查。我希望这可以帮助你 :)
推荐阅读
- entity-framework-migrations - 支持 Db 上下文的模型已更改,但仍可运行。有没有办法关闭迁移?
- javascript - 剩余的 VueJS 循环
- microsoft-teams - 如何通过团队共享按钮向人员发送消息?
- excel - How can I change a variable in a .txt template, if I have more than 5000 different values for this variable in an excel table?
- python - 用 pandas 系列替换 Python 列表理解
- yocto - 如何在 yocto 中添加配方以构建 curl 示例?
- sql - 适用于 Linux 的 SQL 类工具 - 扫描文件并处理 CAT 和 ECHO 命令
- web-audio-api - 如何用js向后播放视频?
- php - 有没有办法将单词与PHP中的html标签内的句子匹配
- angular - 从后端加载文件