如何解决PHP 不迭代
date_default_timezone_set("UTC");
$DateNow = date("d/m/Y H:i",time());
$tommorowUnix = strtotime("+1 day");
$tommorowAfterUnix = strtotime("+2 day");
$holidays = array("30 October 2021","31 October 2021","01 November 2021","02 November 2021","11 November 2021","12 October 2021","25 December 2021","26 December 2021","27 December 2021","1 January 2022","2 January 2022");
然后,我有一个函数,将给定的 $date
与数组进行比较,如果发现为真则返回:
foreach($holidays as &$value)
{
$value = strtotime($value);
}
function isNextDayWeekend($date)
{
$weekDay = date('w',$date);
echo($weekDay);
if($weekDay == 0 || $weekDay == 6)
return true;
else
return false;
}
function isNextDayHoliday($date)
{
$returnVal = false;
foreach ($holidays as $holidayDay)
{
echo ("test");
if($date == $holidayDay) { $returnVal = true; }
}
return $returnVal;
}
$check1 = isNextDayHoliday(strtotime("12 October 2021"));
echo $check1 ? 'true' : 'false';
很遗憾,连 echo ("test")
都没有显示。
@EDIT:解决了上述案例。 $holidays
范围是一个问题。尽管如此,它仍然给我不好的价值观:
function isNextDayHoliday($date,$holidays)
{
$returnVal = false;
foreach ($holidays as $holidayDay)
{
if($date == $holidayDay) {$returnval = true;}
echo "Checking ".$date." vs. ".$holidayDay." = ";
echo $returnVal ? "true" : "false"."<br/>";
}
return $returnVal;
}
$check1 = isNextDayHoliday(strtotime("12 October 2021"),$holidays);
echo $check1 ? "true" : "false";
Checking 1633996800 vs. 1635552000 = false
Checking 1633996800 vs. 1635638400 = false
Checking 1633996800 vs. 1635724800 = false
Checking 1633996800 vs. 1635811200 = false
Checking 1633996800 vs. 1636588800 = false
**Checking 1633996800 vs. 1633996800 = false**
Checking 1633996800 vs. 1640390400 = false
Checking 1633996800 vs. 1640476800 = false
Checking 1633996800 vs. 1640563200 = false
Checking 1633996800 vs. 1640995200 = false
Checking 1633996800 vs. 1641081600 = false
false
解决方法
function isNextDayHoliday($date)
{
$returnVal = false;
foreach ($holidays as $holidayDay)
{
echo ("test");
if($date == $holidayDay) { $returnVal = true; }
}
return $returnVal;
}
你需要将$holidays
传递给这个函数,这个函数不知道holidays
是什么。
你可以全局声明,然后就可以使用了。
你稍微优化一下。
if($date == $holidayDay) return true;
以便在您找到后立即停止处理。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。