PHP用于循环使用DateTime对象

时间:2013-08-31 10:32:35

标签: php arrays datetime for-loop

我有一系列日期。我想从特定的开始日期到特定的结束日期,并在每次在数组中找到给定日期时递增变量。 Í尝试使用以下代码片段:

$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的参考资料,我确信它有一个add方法。我尝试在for循环之外添加这一行,并且它有效......我做错了什么?

1 个答案:

答案 0 :(得分:0)

如果您删除拼写错误,您的代码将有效: -

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对象。