用于带有DateTime对象的循环的PHP


PHP for cycle with DateTime objects

我有一个日期排序数组。我想从一个特定的开始日期到一个特定结束日期,每次在数组中找到给定的日期时都要增加一个变量。Í尝试了以下代码片段:

$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");
}

如果我想运行这个代码,我得到了以下错误:

Fatal error: Call to a member function add() on a non-object in /home/pivoecom/public_html/teszt/query_test.php on line 34

其中,线34是for循环的开口。我读了DateTime的参考资料,我相信有一个添加方法。我试图在for循环之外用这一行添加day,它成功了。。。我做错了什么?

如果删除拼写错误,您的代码将正常工作:-

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'))) {

这样就不会在每次迭代中创建新的DateTime对象。