我每周有3天:周一,周三,周五 对于他们每个人我都有一个号码。我需要做一个能给我这个号码的开关但是如果今天是星期六,我在我的开关语句中没有宣布任何东西,所以我需要的是周五的号码。
<?php
$x = date('d');
class week {
const Mon1 = 7;
const Wen1 = 2;
const Fri1 = 4;
const Mon2 = 14;
const Wen2 = 9;
const Fri2 = 11;
const Mon3 = 21;
const Wen3 = 16;
const Fri3 = 18;
const Mon4 = 28;
const Wen4 = 23;
const Fri4 = 25;
const Wen5 = 30;
}
switch ($x){
case week::Fri1:
echo "Results 11111"; break;
case week::Fri2:
echo "Results 22222"; break;
default:
break;
}; ?>
今天是星期六。
我需要默认抛出Fri2,因为Fri2案例是最后一个valid
案例。
周日,我需要的是周五的结果。
周四我将需要上周三的结果,依此类推。
有没有办法使用switch语句? 如果没有,你会用什么来做这件事?
答案 0 :(得分:2)
编辑: 如果我理解正确,您需要作为默认值,即今天的最后一个工作日。
也许你可以使用类似的东西:
switch(date('w')) {
case 0:
case 6:
$foo = week::Fri2;
break;
default:
$foo = 'your logic';
break;
}
你可以使用:
switch ($x){
case week::Fri1:
echo "Results 11111";
break;
case week::Fri2:
default:
echo "Results 22222";
break;
}
答案 1 :(得分:2)
如果我了解您要执行的操作,您只需移动要匹配的案例旁边的default:
标签。
因为case
或default
标记了案例的开头,然后代码继续到下一个break
,将其中几个堆叠在一起就意味着它们都运行了相同的代码。
请注意,default
甚至不需要是最后一个标签,而是switch
中的任何位置。
switch($x) {
case week::Fri1:
echo "Results 11111";
break;
case week::Fri2:
default:
echo "Results 22222";
break;
}
(请注意,为了清楚起见,我稍微重新格式化了代码。有些人会将break
语句与代码缩进,但我更喜欢使用case
/ {{缩进1}},所以控制流程一目了然。)