PHP如何将DatePeriod生成的多段日期批量存入数组?
解决DatePeriod多组日期存入数组的问题
你的问题核心是while循环中每次都会覆盖$periodLD变量,且遍历日期的foreach放在了循环外部,导致最终仅处理了SQL返回的最后一组起止日期生成的序列。
直接修改代码,将遍历DatePeriod的逻辑移入while循环内部,每生成一组日期序列就追加到目标数组中即可:
// 先初始化目标数组 $datesLD = []; while($rowLD = $getDataLD->fetch_assoc()) { $strDateFrom = $rowLD['ld_time_start']; $strDateTo = $rowLD['ld_time_end']; $periodLD = new DatePeriod( new DateTime($strDateFrom), new DateInterval('P1D'), new DateTime($strDateTo.' +1 day') ); // 把当前组的日期逐个加入数组 foreach ($periodLD as $dateLD) { $datesLD[] = $dateLD->format("Y-m-d"); } }
这样每遍历到一组起止日期,对应的日期序列就会被完整追加到$datesLD数组中,不会丢失任何一组数据。
内容的提问来源于stack exchange,提问作者Chuche Saku
相关产品推荐
相关产品推荐

