我无法将结果插入数组中。
这是我的代码:
$listData2="";
$end = date("n/d/Y",strtotime($row['dDate']));
$start = date("n/d/Y",strtotime($row['aDate']));
$datediff = strtotime($end) - strtotime($start);
$datediff = floor($datediff/(60*60*24));
for($i = 0; $i <=- $datediff + 1; $i++) {
$dateArr=date("n/d/Y", strtotime($start . ' + ' . $i . 'day'));
$listData2[]=$dateArr;
}
答案 0 :(得分:1)
你有一个令人费解的方式这样做,所以我将告诉你如何将两个日期之间的所有日期变成一个数组:
$listData2 = [];
$start = new DateTime($row['dDate']);
$end = (new DateTime($row['aDate']))->modify('+1 day');
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($start, $interval, $end);
foreach ($period as $dt) {
$listData2[] = $dt->format("n/d/Y");
}
这会初始化一个空数组以存储日期(以空字符串开头,而不是数组),并将开始日期和结束日期创建为DateTime个对象(而不是您创建的非标准字符串)然后它创建一个代表1天的DateInterval对象和一个DatePeriod对象来包装所有我们可以使用的东西。然后我们遍历DatePeriod对象并将它们添加到数组中。
(for循环中也有一个无效的运算符(<=-
)。
答案 1 :(得分:0)
以下是示例代码:
$listData2 = array();
$end = date("n/d/Y",strtotime($row['dDate']));
$start = date("n/d/Y",strtotime($row['aDate']));
for(;;) {
$listData2[]=date("n/d/Y", strtotime($start));
$start = date("Y-m-d", strtotime("+1 day", strtotime($start)));
if(strtotime($start)>strtotime($end)) break;
}