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

PHP循环中将相同日期值的时间段合并到同一数组的实现问题

解决方案

你可以以日期day为临时索引做分组处理,循环时先判断当天记录是否已存在,存在则追加时间段,不存在则初始化记录,代码如下:

$items = [];
foreach($settings as $setting){
    $currentDay = $setting->day;
    // 当天无记录时初始化结构
    if(!isset($items[$currentDay])){
        $items[$currentDay] = [
            'day' => $currentDay,
            'periods' => []
        ];
    }
    // 追加当前时间段到对应天的periods数组
    $items[$currentDay]['periods'][] = [
        'start' => $setting->start,
        'end' => $setting->end
    ];
}
// 可选:如果需要将数组转为连续数字索引,新增下面这行代码
$items = array_values($items);
逻辑说明
  • 用day作为临时键,可以快速定位到同一天的记录,避免重复生成同一天的顶层数组项
  • 首次遇到某一天的记录时,先初始化day字段和空的periods数组
  • 每次循环都把当前时间段追加到对应天的periods数组中,就能实现同一天的多个时间段聚合
  • 加array_values处理是为了把以day为键的关联数组转为索引数组,完全匹配你期望的输出结构。

内容的提问来源于stack exchange,提问作者Davis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:36:07