你能在PHP中“退出”一个循环吗?

2022-08-30 07:03:15

我有一个循环,在我的PHP代码中做一些错误检查。最初它看起来像这样...

foreach($results as $result) {
    if (!$condition) {
        $halt = true;
        ErrorHandler::addErrorToStack('Unexpected result.');
    }

    doSomething();
 }

if (!$halt) {
    // do what I want cos I know there was no error
}

这一切都很好,尽管它不需要在一个错误之后,它仍然在循环通过。有没有办法逃脱循环?


答案 1

您正在寻找中断语句。

$arr = array('one', 'two', 'three', 'four', 'stop', 'five');
while (list(, $val) = each($arr)) {
    if ($val == 'stop') {
        break;    /* You could also write 'break 1;' here. */
    }
    echo "$val<br />\n";
}

答案 2

如其他帖子所述,您可以使用中断关键字。有一件事被暗示但没有解释,那就是关键字可以取一个数值来告诉PHP要从多少个级别中分离出来。

例如,如果您有三个前置循环相互嵌套,试图找到一条信息,则可以执行“中断 3”以退出所有三个嵌套循环。这将适用于“for”,“foreach”,“while”,“do-while”或“switch”结构。

$person = "Rasmus Lerdorf";
$found = false;

foreach($organization as $oKey=>$department)
{
   foreach($department as $dKey=>$group)
   {
      foreach($group as $gKey=>$employee)
      {
         if ($employee['fullname'] == $person)
         {
            $found = true;
            break 3;
         }
      } // group
   } // department
} // organization

推荐