You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 22:35:51