Why does 'Cannot break/continue 1 level' comes in PHP?

后端 未结 3 1189
南旧
南旧 2021-02-18 19:55

I am getting sometimes this error on production at:

if( true == $objWebsite ) {
    $arrobjProperties = (array) $objWebsite->fetchProperties( );
    if( false         


        
相关标签:
3条回答
  • 2021-02-18 20:06

    If within a function just change break; to return;

    0 讨论(0)
  • 2021-02-18 20:10

    You can't "break" from an if statement. You can only break from a loop.

    If you want to use it to break from a loop in a calling function, you need to handle this by return value - or throw an exception.


    Return value method:

    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.
    

    Using exceptions - beautiful example here: 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';
    ?>
    
    0 讨论(0)
  • 2021-02-18 20:23

    If you want to still break from if, you can use while(true)

    Ex.

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

    Also you can use switch and default.

    $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++;
    }
    
    0 讨论(0)
提交回复
热议问题