Допустим, у меня есть простой код:
while(1) {
myend();
}
function myend() {
echo rand(0,10);
echo "<br>";
if(rand(0,10) < 3) break;
}
Это не будет работать с кодом ошибки «Неустранимая ошибка: невозможно прервать / продолжить 1 уровень на линии».
Так есть ли возможность завершить цикл во время выполнения подфункции?
Нет Не должно быть; если ваша функция вызывается где-то, где вы не находитесь в цикле, ваш код остановится. В приведенном выше примере ваш вызывающий код должен проверить возвращение функции и затем решить, следует ли прекратить сам цикл. Например:
while(1) {
if (myend())
break;
}
function myend() {
echo rand(0,10);
echo "<br>";
return rand(0,10) < 3;
}
Сделайте условие цикла зависимым от возвращаемого значения функции:
$continue = true;
while( $continue) {
$continue = myend();
}
Затем измените свою функцию на что-то вроде:
function myend() {
echo rand(0,10);
echo "<br>";
return (rand(0,10) < 3) ? false : true;
}
Использование:
$cond = true;
while($cond) {
$cond = myend();
}
function myend() {
echo rand(0,10);
echo "<br>";
if(rand(0,10) < 3) return false;
}