递归返回问题
来源:9-2 web资源防盗链

qq_其实我还小_0
2018-05-07
public function statisDepostieAction($dbu_id,$ag_id_arr,$data=array()){
//查询下级信息
$list = $this->getDataList($dbu_id,$ag_id_arr);
if(!empty($list)){
$ag_ids = array();
foreach ($list as $v){
$data[$v['ag_fid']][$v['ag_id']] = $v;
$ag_ids[] = $v['ag_id'];
}
$this->statisDepostieAction($dbu_id,$ag_ids,$data);
}else{
var_dump($data);
return $data;
}
}
刚开始时候没有return 发现打印data值是正常的,但retun接收的值就不对,在调用递归时候加上return都正常了,请问是怎么回事?感觉每次递归最后不满足条件不就直接返回值了?还是因为data没有引用传值
写回答
1回答
-
Jason
2018-05-11
是这样,你原先有一个数组$data,是空数组,处理完后的结果插入到了这个数组当中,然后又调用本方法,并且把处理后的$data数组接着传进去,这就是说你在不断的累加$data,直到最后一次执行结束,返回$data,然后将这个结果一层一层地返回回到第一次调用时,这样就可以获取到最终的$data
022018-05-18
相似问题