2011-05-31 108 views
6

这可能非常微不足道,但我一直无法弄清楚。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 

任何想法,我在做什么错误?

回答

9

您不能在函数内断开/继续函数外部的循环。但是,你可以打破/继续根据您的函数的返回值,你的循环:

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


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

    //Do stuff 

    echo $output . '<br>';  
} 
1

continue只能跳过循环结构内的迭代。

在你的函数内部,它在循环内运行的上下文丢失了。

7

continue语句仅在循环结构中有效。

+1

+1,因为你增加了一个链接;) – 2011-05-31 06:24:33

+1

是的,这是正确的,我会用'返回;'如果你想停止执行功能。 – 2011-05-31 06:57:13

0

该功能是单独编译的,可以从任何地方调用。因此,这里使用continue是没有意义的,因为上下文不在循环中。如果您希望在此处将工作委托给某个功能,则应设计该功能以返回是否continue的某些指示,例如返回值为TRUEFALSE