首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP不迭代

PHP不迭代
EN

Stack Overflow用户
提问于 2021-07-05 10:26:23
回答 1查看 31关注 0票数 0

我有一系列给定的元素:

代码语言:javascript
复制
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,则返回:

代码语言:javascript
复制
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范围是一个问题。尽管如此,它仍然给了我坏的价值观:

代码语言:javascript
复制
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";
代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-05 10:31:14

代码语言:javascript
复制
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;,以便在找到处理后立即停止处理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68254529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档