我从递归函数返回一个值时遇到一个问题,除了返回一些我在另一个函数中返回的值,EX:如果我在test3
函数中打印了一个值,它打印出来并且它的返回父函数test2
在这里也打印了返回值,但是当我在主函数test1
中打印时,它不打印为什么它的行为是这样的?
我试过以下代码:
class TestController extends AppController {
public function beforeFilter() {
parent::beforeFilter();
---------#code
}
public function test1(){
$parm1 = $_POST['val1'];
$parm2 = $_POST['val2'];
$res = $this->test2($parm1,$parm2);
pr($res);
}
private function test2($parm1,$parm2){
#calculations
if(condition){
#$parm2 value increment
$this->test2($parm1,$parm2);
}else{
$valf = $this->test3($parm1,$parm2);
#here I print $valf it's printed but it's not return a value
return $valf ;
}
}
private function test3($parm1,$parm2){
#calculations
if(condition){
$val = somevalue;
return $val;
}else{
return false;
}
}
}
答案 0 :(得分:0)
我认为你应该在这里使用return
:
private function test2($parm1,$parm2){
if(condition){
return $this->test2($parm1,$parm2); // Here
}else{
$valf = $this->test3($parm1,$parm2);
return $valf ;
}
}
顺便说一下,我认为在控制器内部执行递归方法不是“MVC方式”。在CakePHP中您可以使用Component