求大神告知,为何最后会多执行一次,返回的的为null, 5
//递归查询当前分类id下属所有的id//$id:需要查询的分类id//$arr为最后返回的数组//$tmp为本次递归查询的数组functionfl_arr($id,$a...
//递归查询当前分类id下属所有的id
//$id:需要查询的分类id
//$arr为最后返回的数组
//$tmp为本次递归查询的数组
function fl_arr($id,$arr,$tmp){
$n=M('sp_class');
if(is_array($arr)){
$ape=array();
foreach ($tmp as $vo) {
$sql['pid']=$vo;
$info=$n->where($sql)->getField('id',true);
if($info){
$arr=array_merge($arr,$info);
$ape=array_merge($ape,$info);
}
}
if(empty($ape)){
array_push($arr,$id);
return $arr;
}else{
fl_arr($id,$arr,$ape,$nums);
}
}else{
//第一次递归
$sql['pid']=$id;
$info=$n->where($sql)->getField('id',true);
if(empty($info)){
$arr=array($id);
return $arr;
}else{
$arr=$info;//第一次填充最终返回数组
fl_arr($id,$arr,$info);
}
}
}
最后多一个null 导致返回失败,之前的获取的都是正确的。求大神指点。 展开
//$id:需要查询的分类id
//$arr为最后返回的数组
//$tmp为本次递归查询的数组
function fl_arr($id,$arr,$tmp){
$n=M('sp_class');
if(is_array($arr)){
$ape=array();
foreach ($tmp as $vo) {
$sql['pid']=$vo;
$info=$n->where($sql)->getField('id',true);
if($info){
$arr=array_merge($arr,$info);
$ape=array_merge($ape,$info);
}
}
if(empty($ape)){
array_push($arr,$id);
return $arr;
}else{
fl_arr($id,$arr,$ape,$nums);
}
}else{
//第一次递归
$sql['pid']=$id;
$info=$n->where($sql)->getField('id',true);
if(empty($info)){
$arr=array($id);
return $arr;
}else{
$arr=$info;//第一次填充最终返回数组
fl_arr($id,$arr,$info);
}
}
}
最后多一个null 导致返回失败,之前的获取的都是正确的。求大神指点。 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询