当PHP中出现中断时,它会中断多少级别?

当PHP中出现中断时,它会中断多少级别?,php,Php,好的,这可能是一个基本的问题,但我想要一个有根据的答案,而我似乎无法通过谷歌获得正确的关键字来获得答案。如果这是一个重复,请关闭它,并指出我在正确的方向 所以问题来了。在下面的代码中,当执行指向的中断时,它也会在哪里中断 case 'changeEmployeeInfo': $con = db_connect(DBNAME, DBUSERNAME, DBPASSWORD , DBHOST); $query = 'UPDATE USERS SET firstname = ?, la

好的,这可能是一个基本的问题,但我想要一个有根据的答案,而我似乎无法通过谷歌获得正确的关键字来获得答案。如果这是一个重复,请关闭它,并指出我在正确的方向

所以问题来了。在下面的代码中,当执行指向的中断时,它也会在哪里中断

case 'changeEmployeeInfo':
    $con = db_connect(DBNAME, DBUSERNAME, DBPASSWORD , DBHOST);
    $query = 'UPDATE USERS SET firstname = ?, lastname = ?, email = ? where idusers = ?';
    $updateValues = array($firstName,$lastName,$email,$employeeID);
    $newID = db_change($query,$updateValues,$con);
    if($_SESSION['role']==1||$_SESSION['role']==3||$_SESSION['role']==4){
        if($_POST['status']== true){
            $status = 1;
        }elseif($_POST['status']==false){
            $status = 0;
        }
        else{
            break;//<--THIS IS THE BREAK I'M TALKING ABOUT
        }
        $query = 'UPDATE USERS SET status = ? where idusers = ?';
        $updateValues = array($status, $employeeID);
        $newID = db_change($query,$updateValues,$con);
    }
    db_disconnect($con);
    break;
案例“changeEmployeeInfo”:
$con=db_connect(DBNAME、DBUSERNAME、DBPASSWORD、DBHOST);
$query='更新用户集firstname=?,lastname=?,email=?其中idusers=?';
$updateValues=array($firstName、$lastName、$email、$employeeID);
$newID=db\u change($query、$updateValues、$con);
如果($|U会话['role']==1 |$| U会话['role']==3 | |$| U会话['role']==4){
如果($_POST['status']==true){
$status=1;
}elseif($\u POST['status']==false){
$status=0;
}
否则{
中断//
当PHP中出现中断时,它会中断多少级别


1

break
在PHP中只中断一个级别,在您的例子中是
case
。要中断更多级别,请使用
break n

从:

$i=0;
while(++$i){
交换机(一美元){
案例5:
回声“在5时
\n”; 断开1;/*仅退出开关*/ 案例10: 回声“在10;退出
\n”; 断开2;/*退出开关,同时退出*/ 违约: 打破 } }
在您的示例中,break将移动到
开关
级别,留下您的
case
语句。
db_disconnect
将不会运行。

尝试并亲自查看肯定会更快;)这取决于。我相信在这种情况下,它会从开关盒中断开?@mario哦。天哪。我现在怎么才刚刚了解到这一点?!@fabianblechsidt取决于什么?@fabianblechsidt-不正确,OP的问题的答案是我在我的回答中,Fabian,学会阅读整个问题。当问题很长时也要这样做-对此表示抱歉:(db_disconnect是案例级别的一部分,为什么不运行?@FrankB-更正(它打断了“脱离案例”,而不是“脱离案例”)如果
,为什么不只中断
?因为文档中这样说:
break结束当前for、foreach、while、do while或switch结构的执行。
所以为了确保
db\u disconnect
仍然运行,我应该在中断之前执行它?还有允许转义
I的类似语句吗f
语句?@FrankB您可以使用布尔标志或在您的
if/else
逻辑中移动。@Mathiembert请不要给他任何想法…:P
$i = 0;
while (++$i) {
    switch ($i) {
    case 5:
        echo "At 5<br />\n";
        break 1;  /* Exit only the switch. */
    case 10:
        echo "At 10; quitting<br />\n";
        break 2;  /* Exit the switch and the while. */
    default:
        break;
    }
}