功能不从else返回数组

时间:2016-09-28 02:07:49

标签: php function cakephp

我有以下递归函数:

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的结果。

1 个答案:

答案 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;
    }

感谢https://stackoverflow.com/a/35736286/1501051