效果:
gid: [{
id: 1,
label: '一级 1',
children: [{
id: 4,
label: '二级 1-1',
children: [{
id: 9,
label: '三级 1-1-1'
}, {
id: 10,
label: '三级 1-1-2'
}]
}]
}, {
id: 2,
label: '一级 2',
children: [{
id: 5,
label: '二级 2-1'
}, {
id: 6,
label: '二级 2-2'
}]
}, {
id: 3,
label: '一级 3',
children: [{
id: 7,
label: '二级 3-1'
}, {
id: 8,
label: '二级 3-2'
}]
}],
defaultProps: {
children: 'children',
label: 'label'
}
};
}
};
数据递归的另一种处理方法
/**
* @name 通用数组递归处理方法
* @method Model
* @author 峰神
* @date 2022-01-14
* @param $dataArr arr/必填 数组
* @param $idname str/必填 ID名称
* @param $pidname int/必填 pID名称
* @param $title int/必填 title名称
* @param $children int/必填 children名称
* @param $pid int/必填 父ID 指定输出某个ID数据
* @param $pid_is int/必填 默认=0=全部数据 1=只取子数据
* @ruturn array
*/
public function recursionData(array $dataArr,$idname='id',$pidname='pid',$title='title',$children='children',$pid=0,$pid_is=0)
{
$temp=[[$children=>[]]];$data=[];
if($dataArr){
foreach($dataArr as $k=>$v){
$v[$title]=$v['title'];
$temp[$v[$idname]]=$v;
}
foreach($temp as $key=>&$val){
if(isset($val[$pidname])){
$temp[$val[$pidname]][$children][]=&$val;
}
}
if($pid){
if($pid_is){
$data=$temp[$pid][$children];
}else{
$data=$temp[$pid];
}
}else{
$data=$temp[$pid][$children];
}
}
// dump($data);die;
return $data;
}
|