我的switch语句有大约十个结果,但是其中一些需要1/2循环来检查,所以我不能在case(条件)中写它们,所以我尝试使用多个默认情况,这是可能的?
<?php
switch(true) {
case 1:
break;
case 2:
break;
default:
echo "this text is never printed ??";
while(true) {
while(true) { // case 3
break 3;
}
break;
}
while(true) {
// case 4
break 2;
}
case 5:
break;
default:
while(true) {
// case 6
break 2;
}
case 7:
break;
}
?>
这种事情是否可行,因为我的第一个默认设置似乎根本没有执行?!
感谢
答案 0 :(得分:6)
switch语句中不能有多个default
。此外,default
应该在所有switch
语句之后的case
末尾。
当代码通过PHP引擎运行时,可能发生的事情是解析器正在将switch语句读入哈希映射类型数据结构,并且每次解析器找到{{1}时} label,它覆盖了哈希映射中的现有条目。因此,只有最后default
标签才会在执行中使用的数据结构中结束。
答案 1 :(得分:3)
不可能这不可能,你在switch语句中不能有多个默认情况,你需要在单个最终case语句中加入额外的逻辑。
当达到默认情况时,它会捕获所有条件,因此以后不会评估案例。
答案 2 :(得分:1)
要回答你的问题 - 不,只能有一个默认值,最后一个。我不确定你是否可以在默认情况下放置其他案例,但我确信他们永远不会达到......
修改强>: 另外,我不知道你在那里做什么。重点是什么?你能解释一下吗?我们或许可以帮助您完成您想要做的事情
答案 3 :(得分:1)
交换机中只能有一个默认值。请记住,Zend是不唯一解析PHP的东西,你可能会混淆其他解析器,因为不要将默认情况作为交换机的最后一部分。