当在PHP中达到中断时它会突破多少个级别?

时间:2013-01-09 21:04:42

标签: php

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

所以这就是问题所在。在下面的代码中,当执行指向的中断时,它也会在哪里突破?

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;

我的直觉告诉我,db_disconnect函数仍然会被执行,但UPDATE USERS查询及其关联的行不会被执行。我在想这个是正确的吗?谢谢!

3 个答案:

答案 0 :(得分:5)

PHP中的

break只打破一个级别,在您的情况下为case。要打破更多级别,请使用break n

来自documentation

$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;
    }
}

答案 1 :(得分:2)

  

当在PHP中达到中断时,会突破多少个级别?

1

答案 2 :(得分:1)

在您的示例中,中断将移至switch级别,留下您的case语句。 db_disconnect将无法运行。