如何统计PHP嵌套数组中每组的总天数?
为嵌套时间帧数组添加组内总天数
假设你的现有代码是按季度分组生成2022年的时间帧(跳过指定月份),以下是改造后的代码,实现添加totalDays字段的需求:
<?php $year = 2022; $skipMonths = [2, 6]; // 要跳过的月份(2=二月,6=六月) // 生成全年有效月份(过滤掉跳过的) $validMonths = []; for ($month = 1; $month <= 12; $month++) { if (!in_array($month, $skipMonths)) { $validMonths[] = $month; } } // 按季度分组(可替换为自定义分组逻辑) $groupedFrames = array_chunk($validMonths, 3); // 处理每组,添加总天数和原frame结构 $result = []; foreach ($groupedFrames as $group) { $totalDays = 0; $frame = []; foreach ($group as $month) { $date = new DateTime("$year-$month-01"); $monthDays = (int)$date->format('t'); $totalDays += $monthDays; // 生成原frame中的月份结构(可根据原有代码调整) $frame[] = [ 'year' => $year, 'month' => $month, 'days' => $monthDays ]; } $result[] = [ 'totalDays' => $totalDays, 'frame' => $frame ]; } // 输出结果 print_r($result); ?>
关键改动说明:
- 单月天数计算:利用
DateTime的format('t')方法获取指定月份的总天数,自动适配闰年二月的特殊情况。 - 组内天数累加:遍历每组下的所有月份,累加得到该组的
totalDays。 - 结构保留与扩展:将原有嵌套数组内容存入
frame字段,同时新增totalDays字段组合成最终输出结构。
自定义调整点:
- 如果你的分组逻辑不是按季度(
array_chunk),直接替换为自己的分组规则即可(比如双月分组、自定义时间段分组)。 - 若原
frame的结构不同,只需修改内层循环中$frame[]的内容,保持和你原有代码的结构一致。
内容的提问来源于stack exchange,提问作者user20718909
相关产品推荐
相关产品推荐

