假设我有一个这样的开关语句:
switch ($var)
{
case 'A':
$a = 1;
break;
case 'B':
$a = 1;
$b = 2;
break;
case 'C':
$a = 1;
$b = 2;
$c = 3;
break;
}
有没有办法可以构建switch语句,让重复的$a = 1
和$b = 2
出现一次?
答案 0 :(得分:8)
只需还原case语句的顺序并删除break语句。
switch ($var)
{
case 'C':
$c = 3;
case 'B':
$b = 2;
case 'A':
$a = 1;
break;
}
来自the manual:
了解如何执行switch语句非常重要 为了避免错误。 switch语句逐行执行 (实际上,声明中的声明)。一开始,没有代码 执行。仅当找到具有值的case语句时 匹配PHP表开始执行的switch表达式的值 声明。 PHP继续执行语句直到结束 切换块,或第一次看到break语句。如果 你不要在案件陈述的末尾写一个破产陈述 列表,PHP将继续执行以下案例的陈述。
答案 1 :(得分:6)
像这样:
switch($var) {
case 'C':
$c = 3;
// fallthrough
case 'B':
$b = 2;
// fallthrough
case 'A':
$a = 1;
}
评论当然是可选的,但我希望将它们留在那里,以确保我不会忘记break
的缺失是故意的。
答案 2 :(得分:2)
switch ($var) { case 'C': $c = 3; case 'B': $b = 2; case 'A': $a = 1; break; }
应该做你想做的事。
答案 3 :(得分:2)
switch($var) {
case 'C':
$c = 3;
case 'B':
$b = 2;
case 'A':
$a = 1;
}
通过不使用中断,如果$ var例如包含'C',则整个开关结构将被执行。如果$ var为'B',则交换机将在'B'的情况下进入并从那里执行。