带有日期时间对象的循环PHP
我有一系列的日期。我想从一个特定的开始日期转到一个特定的结束日期,并在数组中每次找到给定的日期时增加一个变量。Í尝试使用以下代码段:带有日期时间对象的循环PHP,php,arrays,datetime,for-loop,Php,Arrays,Datetime,For Loop,我有一系列的日期。我想从一个特定的开始日期转到一个特定的结束日期,并在数组中每次找到给定的日期时增加一个变量。Í尝试使用以下代码段: $result = array(); $iterator = 0; for ($minDateTime = new DateTime($minDate); $minDateTime <= new DateTime($maxDate); $minDateTime->add(new DateInterval('P01D'))) { if ($
$result = array();
$iterator = 0;
for ($minDateTime = new DateTime($minDate); $minDateTime <= new DateTime($maxDate); $minDateTime->add(new DateInterval('P01D'))) {
if ($minDateTime = $myDateArray[$iterator]) {
$iterator++;
}
array_push($result, "$minDateTime=>$iterator");
}
其中第34行为循环的开口。我阅读了DateTime的引用,我确信它有一个add方法。我尝试在for循环之外添加这一行的日期,它成功了。。。我做错了什么?如果删除输入错误,代码将正常工作:-
if ($minDateTime = $myDateArray[$iterator]) {
应该是:-
if ($minDateTime == $myDateArray[$iterator]) {
或者,可能:-
if ($minDateTime === $myDateArray[$iterator]) {
我喜欢您设置循环的方式,我从未想过要这样做,我将来肯定会使用它,不过我可能会:-
for ($minDateTime = new DateTime($minDate), $maxDateTime = new DateTime($maxDate); $minDateTime <= $maxDateTime; $minDateTime->add(new DateInterval('P01D'))) {
for($minDateTime=new DateTime($minDate),$maxDateTime=new DateTime($maxDate);$minDateTime add(new DateInterval('P01D')){
因此,在每次迭代中都不会创建新的DateTime对象。这似乎很让人费解。虽然使用此方法观察到一个看似逻辑错误,但这似乎更让人费解。如果将
add
调用转移到循环之外,您确定它有效吗?我确定。我尝试了它,因为我认为我的Web服务器有一个太旧的PHP on it。但是它成功了。这就是问题所在,谢谢:)。我原以为我在一些实例化或类似这样更复杂的事情上有问题,但在修改之后,循环运行正常。
for ($minDateTime = new DateTime($minDate), $maxDateTime = new DateTime($maxDate); $minDateTime <= $maxDateTime; $minDateTime->add(new DateInterval('P01D'))) {