微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP 不迭代

如何解决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 举报,一经查实,本站将立刻删除。