Есть ли возможность разорвать цикл при вызове функции?

Допустим, у меня есть простой код:

while(1) {
myend();
}

function myend() {
echo rand(0,10);
echo "<br>";
if(rand(0,10) < 3) break;
}

Это не будет работать с кодом ошибки «Неустранимая ошибка: невозможно прервать / продолжить 1 уровень на линии».

Так есть ли возможность завершить цикл во время выполнения подфункции?

0

Решение

Нет Не должно быть; если ваша функция вызывается где-то, где вы не находитесь в цикле, ваш код остановится. В приведенном выше примере ваш вызывающий код должен проверить возвращение функции и затем решить, следует ли прекратить сам цикл. Например:

while(1) {
if (myend())
break;
}

function myend() {
echo rand(0,10);
echo "<br>";
return rand(0,10) < 3;
}
1

Другие решения

Сделайте условие цикла зависимым от возвращаемого значения функции:

$continue = true;
while( $continue) {
$continue = myend();
}

Затем измените свою функцию на что-то вроде:

function myend() {
echo rand(0,10);
echo "<br>";
return (rand(0,10) < 3) ? false : true;
}
3

Использование:

$cond = true;
while($cond) {
$cond = myend();
}

function myend() {
echo rand(0,10);
echo "<br>";
if(rand(0,10) < 3) return false;
}
1
По вопросам рекламы [email protected]