【发布时间】:2018-10-26 15:24:23
【问题描述】:
我正在构建一个概念上非常简单的交货日期系统;它会根据一组假日日期、一些其他变量检查当前日期,并在需要时添加 1 天,如下所示:
$currentDate = date('d-m-Y');
$deliveryDate = date('d-m-Y', strtotime($currentDate, '+1 day');
$allHolidays = array('01-05-2018', '02-05-2018', '03-05-2018');
if ($outOfStock) {
$deliveryDate = date('d-m-Y', strtotime(currentDate, '+2 days');
}
[..and so on ]
return $deliveryDate;
所以我的问题是关于假期的;我想获取变量$deliveryDate 并对照$allHolidays 数组检查它。如果存在,我想“添加 +1 天”并再次检查。
例如,如果 5 月 1 日、2 日和 3 日是假期,而 $deliveryDate 在检查之前是 5 月 1 日,它将看到 5 月 1 日在 $allHolidays 数组中,然后更新“+1 天”到5月2日,再次检查。还在阵中?再加一天。直到结果是 5 月 4 日。
if (in_array($deliveryDate, $allHolidays)) {
$deliveryDate = date("j-F-Y", strtotime($ddate. "+1 day"));
}
这是我现在拥有的代码。它只检查 1 次。如何更新此检查中的变量并再次检查?我有一种强烈的感觉,我需要使用for 和while 循环,但我不知道如何构造它们。我尝试将整个代码包装在一个while循环中,但还没有运气。
编辑:使用 do-while 循环可以工作,但我如何让它识别更新的变量?如果我更新它在do中的while逻辑中使用的变量,它如何正确循环?
do {
$deliveryDate = date("j-F-Y", strtotime($deliveryDate. "+1 day"));
} while (in_array($deliveryDate, $allHolidays)
【问题讨论】:
-
do-while可能是您想要的? -
@Script47 ;我想会,但我不知道“While”语句是什么。
-
在增加日期时跳过假期这一主题已有预先存在的 StackOverflow 页面。你有没有好好环顾四周?
-
@mickmackusa 在我开始研究之前,我确实看到了这些确切的主题。没有检查他们是否有这个特定问题。感谢您的输入,将再次通过它们