我有一系列日期。我想从特定的开始日期到特定的结束日期,并在每次在数组中找到给定日期时递增变量。 Í尝试使用以下代码片段:
$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循环之外添加这一行,并且它有效......我做错了什么?
答案 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对象。