我有以下递归函数:
public function get_referred_list_down($referral,$level){
if($level>1){
$users = $this->Invoice->User->find('list',array('conditions'=>array('User.referral'=>$referral),'fields'=>array('User.id','User.username')));
$this->get_referred_list_down($users,$level-1);
}else{
$users = $this->Invoice->User->find('list',array('conditions'=>array('User.referral'=>$referral),'fields'=>array('User.id','User.username')));
}
return $users;
}
我将其称为$this->get_referred_list_down('DSTL00004',2);
在if
中,它返回以下数组:
Array
(
[9] => DSTL00005
[10] => DSTL00006
[11] => DSTL00007
[12] => DSTL00008
[13] => DSTL00009
)
我已经将它传递给了函数,它在else
中提供了以下内容:
Array
(
[14] => DSTL00010
[15] => DSTL00011
[16] => DSTL00012
[17] => DSTL00013
)
但它会返回if
的结果,而不是返回else
的结果。
答案 0 :(得分:0)
通过在递归调用函数之前添加return来解决,所以现在代码看起来像:
public function get_referred_list_down($referral,$level){
if($level>1){
$users = $this->Invoice->User->find('list',array('conditions'=>array('User.referral'=>$referral),'fields'=>array('User.id','User.username')));
return $this->get_referred_list_down($users,$level-1);
}else{
$users = $this->Invoice->User->find('list',array('conditions'=>array('User.referral'=>$referral),'fields'=>array('User.id','User.username')));
}
return $users;
}