【问题标题】:PHP continue inside functionPHP continue 内部函数
【发布时间】:2011-09-05 05:42:24
【问题描述】:

这可能非常微不足道,但我无法弄清楚。

这行得通:

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 个 $output 然后:

Fatal error: Cannot break/continue 1 level

知道我做错了什么吗?

【问题讨论】:

    标签: php function continue


    【解决方案1】:

    您不能从函数内部中断/继续函数外部的循环。但是,您可以根据函数的返回值中断/继续循环:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 是的,这是正确的,如果你想停止执行一个函数,我会使用return;
      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2014-04-14
          • 2014-03-02
          • 1970-01-01
          • 1970-01-01
          • 2022-11-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-09
          相关资源
          最近更新 更多