4 回答
TA贡献1900条经验 获得超5个赞
这是一个小例子。这将回显基于时间的程序。为了确定日期,我建议使用 IF 而不是 switch case。
$time = date("H");
$day = date("w");
$program = "";
if($day == 0){
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;
}
}else{
.......
}
echo $program;
TA贡献1828条经验 获得超13个赞
你的问题出在 switch 语句上,如果你这样做:
switch($time){
case $time < 1:
...
}
并为 $time 填写一个值,例如 0:
switch(0){
case 0 < 1:
...
}
然后将调用中的值switch()与之后的值进行比较case:
0 == true
嗯,这个——以及所有其他比较——都是false。如果您确实想在 switch 语句中使用 less-than 进行比较,则需要执行以下操作:
switch(true){
case $time < 1:
...
}
那么比较结果就是:
true == true
请注意,在您的原始代码中,当 的 值$time不为 0 时,它会比较 is 3 == true,因为switch没有严格检查(它使用 ==,而不是 ===)true。无论值如何,它总是返回第一个结果“Be our guest”。
TA贡献1804条经验 获得超8个赞
我认为你可以尝试这个,它也可能适用于第一个开关,但我更喜欢使用if:
function getDayTimeData ($day, $time)
{
if ((int) $day === 0) {
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;
}
}
}
if(isset($_POST["DayData"]) && isset($_POST["TimeData"]))
{
echo(getDayTimeData($_POST["DayData"],$_POST["TimeData"]));
}
- 4 回答
- 0 关注
- 158 浏览
添加回答
举报