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与数组进行比较,如果结果为true,则返回:


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")也没有被显示。

@编辑:解决了上述情况。$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;,以便在找到它后立即停止处理。

最新更新