Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有日期时间对象的循环PHP_Php_Arrays_Datetime_For Loop - Fatal编程技术网

带有日期时间对象的循环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'))) {