Switch语句中的循环

时间:2009-11-15 16:13:05

标签: php loops breakpoints

我的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;
}

?>

这种事情是否可行,因为我的第一个默认设置似乎根本没有执行?!

感谢

4 个答案:

答案 0 :(得分:6)

switch语句中不能有多个default。此外,default应该在所有switch语句之后的case末尾。

当代码通过PHP引擎运行时,可能发生的事情是解析器正在将switch语句读入哈希映射类型数据结构,并且每次解析器找到{{1}时} label,它覆盖了哈希映射中的现有条目。因此,只有最后default标签才会在执行中使用的数据结构中结束。

答案 1 :(得分:3)

不可能这不可能,你在switch语句中不能有多个默认情况,你需要在单个最终case语句中加入额外的逻辑。

当达到默认情况时,它会捕获所有条件,因此以后不会评估案例。

答案 2 :(得分:1)

要回答你的问题 - 不,只能有一个默认值,最后一个。我不确定你是否可以在默认情况下放置其他案例,但我确信他们永远不会达到......

修改: 另外,我不知道你在那里做什么。重点是什么?你能解释一下吗?我们或许可以帮助您完成您想要做的事情

答案 3 :(得分:1)

交换机中只能有一个默认值。请记住,Zend是唯一解析PHP的东西,你可能会混淆其他解析器,因为不要将默认情况作为交换机的最后一部分。