【问题标题】:compare Carbon's isSameDay method create infinite loop in For statement比较 Carbon 的 isSameDay 方法在 For 语句中创建无限循环
【发布时间】:2016-12-11 21:54:52
【问题描述】:

我正在循环 2 个日期,并在其间整天打印出来。 下面是我使用 carbon 的 For 循环。即使 isSameDay 返回 true,循环也不会停止。

    $check_in = new Carbon($check_in);
    $check_out = new Carbon($check_out);

    for(
        $check_in; 
        $check_in->addDay(); 
        $check_in->isSameDay($check_out)
    ) {
        print_r($check_in->day);
    }

我测试了以下代码

print_r($check_in->addDay(4)->isSameDay($check_out));
// 12/20 + 4 day = 12/24 return true. 

【问题讨论】:

    标签: php date for-loop php-carbon


    【解决方案1】:

    所以我参考了 for 循环的文档

    第一个表达式 (expr1) 在循环开始时无条件地计算(执行)一次。

    在每次迭代开始时,都会计算 expr2。如果计算结果为 TRUE,则循环继续并执行嵌套语句。如果结果为 FALSE,则循环的执行结束。

    在每次迭代结束时,都会评估(执行)expr3。

    所以我的订单错了应该是

     for($check_in; $check_in->lte($check_out); $check_in->addDay(1)) {
        
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-30
      相关资源
      最近更新 更多