为什么“无法摆脱/继续1级”进来PHP?(Why does 'Cannot break/co

2019-07-31 01:34发布

我有时会收到此错误的产量:

if( true == $objWebsite ) {
    $arrobjProperties = (array) $objWebsite->fetchProperties( );
    if( false == array_key_exists( $Id, $Properties ) ) {
       break;
    }
    $strBaseName = $strPortalSuffix . '/';

    return $strBaseName;
}

$strBaseName = $strSuffix ;
return $strBaseName;

我试图重现此问题。 但没有得到任何进展。 $编号,接收到具有价值$属性。

有谁知道什么时候是“无法摆脱/继续1级”进来PHP?

我已经看到了这个帖子PHP致命错误:无法摆脱/继续 。 但没有得到任何帮助。

Answer 1:

从if语句不能“突破”。 您只能从回路断开。

如果你想用它来从一个调用函数回路断开,则需要通过返回值来处理这一点 - 或者抛出异常。


返回值的方法:

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

<?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';
?>


Answer 2:

如果在一个函数只是改变中断; 回来;



Answer 3:

如果你想仍然打破if ,您可以同时使用(真)

防爆。

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

你也可以使用开关和默认。

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


文章来源: Why does 'Cannot break/continue 1 level' comes in PHP?