php - 对数组元素进行分组并计算价格
问题描述
请建议如何对数组的相同元素进行分组、计算成本(和总计)和输出字符串,如:
烧烤 - 小(26 厘米)x 2 - 26.98 美元
肉酱 - 小号 (26cm) x 3 - 36$
可口可乐 0.5 - 1$
……
总计:120.96$
JSON 格式的数组:
[{"name":"BBQ - Small (26cm)","params":"","price":"12.99"},
{"name":"Coca-cola 0.5","params":"","price":"1"},
{"name":"BBQ - Small (26cm)","params":"","price":"12.99"},
{"name":"BBQ - Mid (31cm)","params":"","price":"14.99"},
{"name":"BBQ - Small (26cm)","params":"","price":"12.99"},
{"name":"Bolognese - Small (26cm)","params":"","price":"12"},
{"name":"Coca-cola 0.5","params":"","price":"1"},
{"name":"BBQ - Small (26cm)","params":"","price":"12.99"}]
解决方案
循环数组并构建关联结果数组。
如果该项目以前在数组中不存在,则添加一个新项目。
然后将 1 添加到计数并将价格添加到该项目的小计。
$new['total'] =0;
foreach($arr as $sub){
if(!isset($new[$sub['name']]['count'])){
$new[$sub['name']]['count'] = 0;
$new[$sub['name']]['total'] = 0;
}
$new[$sub['name']]['count']++;
$new[$sub['name']]['total'] += $sub['price'];
$new['total'] += $sub['price'];
}
var_export($new);
回报:
array (
'total' => 80.95,
'BBQ - Small (26cm)' =>
array (
'count' => 4,
'total' => 51.96,
),
'Coca-cola 0.5' =>
array (
'count' => 2,
'total' => 2,
),
'BBQ - Mid (31cm)' =>
array (
'count' => 1,
'total' => 14.99,
),
'Bolognese - Small (26cm)' =>
array (
'count' => 1,
'total' => 12,
),
推荐阅读
- html - 属性顺序重要吗?
- php - MAMP 不启动
- sql - MS SQL:连接三个表并仅从数值计算平均值
- javascript - 刷新网络浏览器时Firebase数据不起作用
- ios - 我正在尝试从我的 ios Swift 项目中的 Firestore 数据库中获取数据
- python - Seaborn:如何使用 PairGrid 获取 distplot 的 y 轴计数
- javascript - Onchange sessionStorage.clear() 不工作
- makefile - 为什么目标“mykernel.bin”的配方失败了?
- mysql - 如何通过sql查询获取本月在数据库中发送的平均电子邮件数
- angular - 无法在 Angular 5 的 tsconfig 中使用模块 esnext 进行动态模块导入