首页 > 解决方案 > PHP switch case,0 没有被识别为一个值?

问题描述

我在 PHP 脚本中有一个 switch case 语句,它根据来自 JS 文件的 Ajax 调用提供的“Day”和“Hour”值返回一个字符串值。但只要值为 0(即星期天变量和 0 为午夜变量)该语句不起作用并且值返回为空。我似乎找不到解决方案这里是 PHP 函数和 Ajax 调用的代码的较短版本;

function getDayTimeData($day, $time){
    $program = "";
    switch($day){
        case 0: //Sunday
            switch($time){
                case $time < 1:
                    $program = 'Be Our Guest';
                    break;
                case $time < 6:
                    $program = 'Club Technoise';
                    break;
                case $time < 12:
                    $program = 'Morning Juice';
                    break;
                case $time < 21:
                    $program = 'Detox';
                    break;
                case $time < 24:
                    $program = 'Disco Ball';
                    break;
            }
            break;
     }
}
if(isset($_POST["DayData"]) && isset($_POST["TimeData"]))
{
    echo(getDayTimeData($_POST["DayData"],$_POST["TimeData"]));
}

这是 Jquery Ajax 脚本

function getDayTimeAjax(_day,_time){
    var def2 = $.Deferred();
    
    setTimeout(function(){
        if(xhr && xhr.readyState != 4){
            xhr.abort();
        }
        var xhr = $.ajax({
            type: 'post',
            url: 'returnPoster.php',
            contentType: "application/x-www-form-urlencoded; charset=UTF-8",
            data: {DayData: _day, TimeData: _time},
            dataType: 'text',
            success: function(x){
                programInfo = x;
                def2.resolve();
            }
        })
    },2000);
    return $.when(def2).done(function(){}).promise();
}

var d = new Date();
var programInfo = ".";

setInterval(function () { updateProgram() }, 3000);

function updateProgram(){
    getDayTimeAjax(d.getDay(),d.getHours()).done(function(){
        console.log(programInfo.trim());
    })
}

编辑:对不起,伙计们,我似乎在这个主题上给出了一些错误信息,因为我在设置这个线程时有点着急。仅当 $time 值为 0 时才会出现问题。在发生“case $time <1:”操作之前,这些值似乎很好。从那里开始,即使 $time 变量的值为 0,它也不会执行第一种情况下的代码块,因此程序变量保持为空。所有其他值都返回 switch 语句中的值。

标签: javascriptphpjqueryajax

解决方案


你不能像这样比较整数值和时间,

switch($time){
    case $time < 1:
      break;
}

尝试比较相同的类型值。


推荐阅读