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 關注
- 218 瀏覽
添加回答
舉報