javascript - 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 语句中的值。
解决方案
你不能像这样比较整数值和时间,
switch($time){
case $time < 1:
break;
}
尝试比较相同的类型值。
推荐阅读
- php - 我可以在 WordPress 中将帖子缩略图放在帖子旁边吗?(主题)
- javascript - 如何在 Node js 中检查/使用 md5 哈希到请求流?
- php - 结合 Elementor Pro 创建简单的自定义帖子类型
- c++ - 不知道如何在我的主函数中调用我的类(编译)
- css - CSS Polyfill 使“page-break-after: Avoid”和“target-counter”工作?
- c# - 使用 google-cloud-speech API 在 iOS 应用中转录长音频文件
- java - Spring security 3.1 版 - 需要使用 userPrincipalName 而不添加域或 sAMAccountName 来匹配用户(搜索过滤器?)
- node.js - docker,获取容器名称,而不是nodejs中的容器ID
- javascript - JS/JQuery 中的去抖滚动事件是如何工作的?
- java - 单击按钮仅适用于调试器