如何从嵌套函数中断循环


how to break loop from nested function?

这是的问题

public function loop (){
    while($this->controlFunction()){
        //do stuff
    }
}
public function controlFunction (){
     $this->nestedFunction();
}
public function nestedFunction (){
   if($condA){ //whatsoever the condition
       break;
   } 
}

这可能吗?我不想返回,然后使用标志再次返回,看起来像意大利面条代码

谢谢你们的回答,伙计们,经过思考,我的问题似乎很愚蠢。。。无论如何,谢谢:)

根据文档:

break ends execution of the current for, foreach, while, do-while or switch structure

由于调用函数会更改作用域,break语句将不会影响执行while-循环的前一个作用域。

事实上,由于作用域与nestedFunction方法中的作用域不同,调用break将导致致命错误(E_ERROR),因为该作用域不知道在上一个作用域中运行的while循环。

Fatal error: Cannot break/continue 1 level

所以不,这是不可能的。

你试过了吗?无论如何,返回一个值是一种更好的方法,可以清楚地了解函数应该做什么。你应该始终尝试使函数独立,这是一种很好的做法。