首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么PHP中会出现“不能中断/继续1级”?

为什么PHP中会出现“不能中断/继续1级”?
EN

Stack Overflow用户
提问于 2012-08-16 21:31:21
回答 3查看 43.9K关注 0票数 22

在以下位置,我有时会在生产中遇到以下错误:

代码语言:javascript
复制
if( true == $objWebsite ) {
    $arrobjProperties = (array) $objWebsite->fetchProperties( );
    if( false == array_key_exists( $Id, $Properties ) ) {
       break;
    }
    $strBaseName = $strPortalSuffix . '/';

    return $strBaseName;
}

$strBaseName = $strSuffix ;
return $strBaseName;

我已经尝试过重现这个问题。但没有取得任何进展。$Id,具有接收的值的$Properties。

有人知道PHP中什么时候会出现“不能中断/继续1级”吗?

我在PHP Fatal error: Cannot break/continue上看到过这篇文章。但没有得到任何帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-16 21:50:36

你不能从if语句中“中断”。您只能从循环中中断。

如果你想用它来中断调用函数中的循环,你需要通过返回值来处理--或者抛出一个异常。

返回值方法:

代码语言:javascript
复制
while (MyLoop) {
   $strSecureBaseName = mySubFunction();
   if ($strSecureBaseName === false) {   // Note the triple equals sign.
        break;
   }
   // Use $strSecureBaseName;
}

// Function mySubFunction() returns the name, or false if not found.

使用异常-这里有一个漂亮的例子:http://php.net/manual/en/language.exceptions.php

代码语言:javascript
复制
<?php
function inverse($x) {
    if (!$x) {
        throw new \Exception('Division by zero.');
    } else {
        return 1/$x;
    }
}

try {
    echo inverse(5) . "\n";
    echo inverse(0) . "\n";
} catch (\Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

// Continue execution
echo 'Hello World';
?>
票数 33
EN

Stack Overflow用户

发布于 2016-01-15 07:36:49

如果在一个函数中,只需更改break;返回;

票数 1
EN

Stack Overflow用户

发布于 2016-01-27 21:09:56

如果您仍然想脱离if,可以使用while(true)

例如。

代码语言:javascript
复制
$count = 0;
if($a==$b){
    while(true){
        if($b==$c){
            $count = $count + 3;
            break;  // By this break you will be going out of while loop and execute remaining code of $count++.
        }
        $count = $count + 5;  //
        break;  
    }
    $count++;
}

您还可以使用switch和default。

代码语言:javascript
复制
$count = 0;
if($a==$b){
    switch(true){
      default:  
         if($b==$c){
            $count = $count + 3;
            break;  // By this break you will be going out of switch and execute remaining code of $count++.  
        }
        $count = $count + 5;  //
    }
    $count++;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11988281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档