Почему "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 Неустранимая ошибка: не удается сломать/продолжить. Но не получил никакой помощи.
Ответы
Ответ 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';
?>
Ответ 2
Если внутри функции просто изменить break; для возврата;
Ответ 3
Если вы хотите по-прежнему отключиться от if
, вы можете использовать while (true)
Исх.
$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++;
}