

新闻资讯
技术教程本文讲解如何遍历

在处理从 API 或数据库返回的嵌套结构数据时,常需对特定字段(如 qty)按逻辑分组求和。示例数据以客户 ID 为键(如 "3"、"6"),每个键对应一个订单项数组,目标是为每个客户计算其所有订单项的 qty 总和。
原始代码的主要问题在于:
✅ 正确做法是:在外层循环中初始化 $attrs 并将 ordered_sum 设为 0;在内层循环中持续累加 qty,不重置。
以下是优化后的完整实现:
$items) {
// 每组客户数据独立初始化
$attrs = [
'customer' => '',
'ordered_sum' => 0
];
foreach ($items as $item) {
// 确保 customer 和 qty 存在,避免 Notice 错误
if (isset($item['customer']['company_name'])) {
$attrs['customer'] = $item['customer']['company_name'];
}
if (isset($item['qty']) && is_numeric($item['qty'])) {
$attrs['ordered_sum'] += (int)$item['qty'];
}
}
$output[] = $attrs;
}
// 输出标准化 JSON(带缩进便于调试)
echo json_encode($output, JSON_PRETTY_PRINT);
?>预期输出:
[
{
"customer": "Mertz and Sons",
"ordered_sum": 4
},
{
"customer": "Turcotte PLC",
"ordered_sum": 12
}
]? 关键注意事项:
通过合理控制变量作用域与前置初始化,即可稳健实现嵌套结构下的分组数值聚合。