Почему «PHP не удается сломать / продолжить 1 уровень»?

Иногда я получаю эту ошибку при производстве:

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

Я попытался воспроизвести эту проблему. Но не добиться прогресса. $ Id, $ Свойства, имеющие полученное значение.

Кто-нибудь знает, когда «Не удается сломать / продолжить 1 уровень» входит в PHP?

Я видел это сообщение PHP Неустранимая ошибка: не удается сломать / продолжить . Но не получил никакой помощи.

Solutions Collecting From Web of "Почему «PHP не удается сломать / продолжить 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'; ?> 

Если внутри функции просто изменить break; вернуться;

Если вы хотите по-прежнему отрываться от if , вы можете использовать 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++; } в $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++; }