如何在PHP中从数组提取重复日期并统计viewscount总和
PHP数组合并重复日期的viewscount求和方案
要实现检测数组中重复日期并对对应viewscount求和的需求,可以通过以下步骤完成:
实现代码
// 输入数组 $originalData = [ ['viewscount' => 18, 'date' => '2022-07-14'], ['viewscount' => 19, 'date' => '2022-07-18'], ['viewscount' => 1, 'date' => '2022-07-19'], ['viewscount' => 1, 'date' => '2022-08-03'], ['viewscount' => 1, 'date' => '2022-08-03'], ]; // 临时数组用于按日期聚合数据 $aggregatedData = []; foreach ($originalData as $item) { $dateKey = $item['date']; if (isset($aggregatedData[$dateKey])) { // 日期已存在,累加viewscount $aggregatedData[$dateKey]['viewscount'] += $item['viewscount']; } else { // 日期不存在,初始化数据 $aggregatedData[$dateKey] = $item; } } // 转换为索引数组,匹配期望输出格式 $result = array_values($aggregatedData); // 打印结果 print_r($result);
代码说明
- 临时数组聚合:利用日期作为数组键,快速判断当前日期是否已存在,避免重复遍历查找,提升处理效率
- 累加逻辑:遍历原数组时,若日期已在临时数组中,直接将viewscount值相加;否则将当前元素存入临时数组
- 格式转换:使用
array_values()将以日期为键的关联数组转换为索引数组,与示例输出结构完全匹配
运行上述代码后,将得到期望的输出结果:
Array ( [0] => Array ( [viewscount] => 18 [date] => 2022-07-14 ) [1] => Array ( [viewscount] => 19 [date] => 2022-07-18 ) [2] => Array ( [viewscount] => 1 [date] => 2022-07-19 ) [3] => Array ( [viewscount] => 2 [date] => 2022-08-03 ) )
内容的提问来源于stack exchange,提问作者vicky
相关产品推荐
相关产品推荐

