随手写了个php的递归函数突然发现没有返回值,
加了return后确实可行了,但没有明白过来为什么.
private function breakmenu($id,$arr){
$mo=Folders::model()->findByPk($id);
// $arr[]=array($id,$mo->sco_name,$mo->sco_parent_id);
$arr[]=array($id=>$mo->sco_name);
if($mo->sco_parent_id!=0){
$this->breakmenu($mo->sco_parent_id, $arr);
}else{
$arr[]=array(0=>"ROOT");
return $arr;
}
}
看了半天不知到问题在那,感觉也没有写错什么,后来查阅到一篇文章,有同样的问题,但解决方法是在循环除加个return,
private function breakmenu($id,$arr){
$mo=Folders::model()->findByPk($id);
// $arr[]=array($id,$mo->sco_name,$mo->sco_parent_id);
$arr[]=array($id=>$mo->sco_name);
if($mo->sco_parent_id!=0){
return $this->breakmenu($mo->sco_parent_id, $arr);//这个加个return
}else{
$arr[]=array(0=>"ROOT");
return $arr;
}
}
加了return后确实可行了,但没有明白过来为什么.