You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP遍历节假日数组无输出、时间戳匹配返回值错误问题排查

问题原因分析
  • 第一阶段echo "test"无输出的原因是$holidays属于全局变量,你既没有在isNextDayHoliday函数内声明引入全局变量,也没有将其作为参数传入,函数内调用的$holidays属于未定义的空值,foreach遍历空值不会执行循环体,因此没有任何输出。这个你已经定位为作用域问题,修改为传参的解决方案是正确的。
  • 第二阶段值完全相等仍返回false的根因是PHP变量对大小写敏感:
    你在函数开头初始化的返回值变量名为 $returnVal(V大写),但匹配成功的分支里赋值的是 $returnval(v小写),二者在PHP中是完全独立的两个变量。匹配成功时你只是给未初始化的$returnval赋值为true,但是最终返回的$returnVal始终保持初始化的false值,才会出现日志里值相等却返回false的情况。
修复方案

仅需要统一赋值时的变量名大小写即可:

function isNextDayHoliday($date,$holidays)
{
    $returnVal = false;
    foreach ($holidays as $holidayDay)
    {
        if($date == $holidayDay) {
            $returnVal = true; // 修改变量名和初始化的大小写一致
            break; // 可选优化:匹配到后直接跳出循环,无需遍历剩余元素
        }   
        echo "Checking ".$date." vs. ".$holidayDay." = ";
        echo $returnVal ? "true" : "false"."<br/>";
    }
    return $returnVal;
}
可选简化方案

你也可以直接用PHP内置的in_array函数实现相同逻辑,无需手动遍历数组:

function isNextDayHoliday($date,$holidays)
{
    return in_array($date, $holidays);
}

内容的提问来源于stack exchange,提问作者Mateusz Żymła

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 03:48:01