use*_*368 2 php switch-statement
假设我有一个这样的switch语句:
switch ($var)
{
case 'A':
$a = 1;
break;
case 'B':
$a = 1;
$b = 2;
break;
case 'C':
$a = 1;
$b = 2;
$c = 3;
break;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法可以构造那个switch语句来重复$a = 1并$b = 2出现一次?
只需还原case语句的顺序并删除break语句.
switch ($var)
{
case 'C':
$c = 3;
case 'B':
$b = 2;
case 'A':
$a = 1;
break;
}
Run Code Online (Sandbox Code Playgroud)
从手册:
了解switch语句的执行方式以避免错误非常重要.switch语句逐行执行(实际上是逐个语句).一开始,没有代码被执行.只有当找到的case语句的值与switch表达式的值匹配时,PHP才会开始执行语句.PHP继续执行语句,直到switch块结束,或者第一次看到break语句.如果你不在case语句列表的末尾写一个break语句,PHP将继续执行以下情况的语句.
像这样:
switch($var) {
case 'C':
$c = 3;
// fallthrough
case 'B':
$b = 2;
// fallthrough
case 'A':
$a = 1;
}
Run Code Online (Sandbox Code Playgroud)
评论当然是可选的,但我希望将它们留在那里以确保我不会忘记缺乏a break是故意的.