0

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

$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 循环之外用这条线添加一天,它起作用了......我做错了什么?

4

1 回答 1

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

于 2013-08-31T13:41:20.467 回答