首页 > 解决方案 > 我想在一个while循环日期中获取第一天和最后一天并将它们放在一个变量中

问题描述

我有一个类似祈祷时间的日历,

让我们说从(05-12-2020)到(07-28-2020)的日历

这个日历有2个祈祷时间,一个在晚上,另一个在早上,在这个月的乞讨和月底,它们是完全不同的时间

举个例子:第一次祈祷在(01:42 AM)和第二次在(00:19 AM) ..所以我在这里没有问题。

但它们在此日期范围中间的几天内同时出现

举个例子:第一个祈祷变成(01:17 AM),第二个也变成(01:17 AM)

我怎么知道它们变得相似的第一天和最后一天的日期并将其放入变量中???

很抱歉,因为我真的无法很好地解释我的意思,而且代码也很大,所以我不能粘贴它,但我会上传一张图片来澄清更多

请注意:我使用while循环通过一些数学和天文方程计算它们,并且时间因城市而异,因此它们是动态的而不是静态的,但会发生相同的情况

我正在考虑类似的事情

if($first_prayertime == $second_prayertime){
//give me the first and last date they are similar
//and put every one of them in a variable
}

砑砑

标签: phpdatetimewhile-loopdo-while

解决方案


在迭代时,检查匹配时间。

在第一次遇到时,将这两个变量与行的日期一起保存。

在随后的匹配遭遇中,覆盖最后日期。

一旦找到第一个日期并且存在时间不匹配,请中断循环以避免不必要的迭代。

伪代码:

$firstPrayerDate = null;
foreach ($prayerData as $row) {
    if ($row['first_prayertime'] === $row['second_prayertime']) {
        if (!$firstPrayerDate) {
            $firstPrayerDate = $row['prayerDate'];
            $lastPrayerDate = $firstPrayerDate
        } else {
            $lastPrayerDate = $row['prayerDate'];
        }
    } elseif ($firstPrayerDate) {
        break;
    }
}

推荐阅读