【发布时间】:2021-07-05 10:26:23
【问题描述】:
我有一个给定元素的数组:
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
【问题讨论】:
-
$holidays在function isNextDayHoliday内部为空,它没有在函数内部定义。这可能会有所帮助:PHP function use variable from outside