PHP продолжается внутри функции

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

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

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 

Любая идея, что я делаю неправильно?

Solutions Collecting From Web of "PHP продолжается внутри функции"

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

 function myFunction(){ //Do stuff return $foo === 'bar'; } foreach($x as $y) { if(myFunction()) { continue; } //Do stuff echo $output . '<br>'; } 

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

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

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

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