PHP продолжить внутри функции - PullRequest
8 голосов
/ 31 мая 2011

Это, вероятно, очень тривиально, но я не смог понять это.

Это работает:

function MyFunction(){

//Do stuff

}


foreach($x as $y){

MyFunction();

if($foo === 'bar'){continue;}

//Do stuff

echo $output . '<br>';

}

Но это не так:

function MyFunction(){

//Do stuff

if($foo === 'bar'){continue;}

}


foreach($x as $y){

MyFunction();

//Do stuff

echo $output . '<br>';

}

Это дает только 1 $ вывода, а затем:

Fatal error: Cannot break/continue 1 level

Есть идеи, что я делаю не так?

Ответы [ 4 ]

11 голосов
/ 31 мая 2011

Вы не можете разорвать / продолжить цикл вне функции, внутри функции.Тем не менее, вы можете прервать / продолжить цикл на основе возвращаемого значения вашей функции:

function myFunction(){   
    //Do stuff
    return $foo === 'bar';
}


foreach($x as $y) {
    if(myFunction()) {
        continue;
    }

    //Do stuff

    echo $output . '<br>';    
}
7 голосов
/ 31 мая 2011

Оператор continue действителен только внутри циклических структур.

1 голос
/ 31 мая 2011

continue может пропускать только итерации внутри циклической структуры.

Внутри вашей функции контекст выполнения внутри цикла потерян.

0 голосов
/ 31 мая 2011

Функция скомпилирована отдельно и может быть вызвана из любого места. Таким образом, использование continue здесь не имеет смысла, поскольку контекст не в цикле. Если вы хотите делегировать работу этой функции здесь, вы должны разработать функцию, которая будет возвращать некоторое указание на continue или нет, такое как TRUE или FALSE возвращаемое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...