/**
* 子集递归
* @param $data
* @param int $pid
* @return array
*/
public function sonlevel($data,$pid=0)
{
$arr = [];
foreach ($data as $key=>$val){
if($val['pid'] == $pid){
$val['son'] = $this->sonlevel($data,$val['id']);
$arr[] = $val;
}
}
return $arr;
}
子集递归
/**
* 递归
* @param $data 传入的参数
* @param int $pid 父级id
* @param string $html 添加的分隔符
* @param int $level 层级
*/
public function treelevel($data,$pid=0,$html='--',$level=0)
{
static $arr = [];//定义静态数组 所以无法覆盖
foreach ($data as $val){
if($val['pid'] == $pid){
$val['html'] = str_repeat($html,$level*2);
$val['level'] = $level+1;
$arr[] = $val;
$this->treelevel($data,$val['id'],$html,$val['level']);
}
}
return $arr;
}
层级递归