Switch语句中的循环

Jud*_*ing 1 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;
}

?>
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Asa*_*aph 6

default在switch语句中不能有多个.此外,default应该switch在所有case声明结束后.

什么可能当你的代码通过PHP引擎运行中发生的是,解析器读取开关语句到一个哈希图型数据结构和每个解析器找到一个时间default标签,它覆盖在哈希表的现有条目.因此,只有最后一个default标签最终会出现在执行中使用的数据结构中.