$arr = [
0 => ['id' => 1,'pid'=>0,'cid'=>0,'name'=>'name'],
1 => ['id' => 2,'pid'=>1,'cid'=>0,'name'=>'name'],
2 => ['id' => 3,'pid'=>0,'cid'=>0,'name'=>'name'],
3 => ['id' => 4,'pid'=>3,'cid'=>0,'name'=>'name'],
4 => ['id' => 5,'pid'=>0,'cid'=>0,'name'=>'name'],
5 => ['id' => 6,'pid'=>5,'cid'=>0,'name'=>'name'],
6 => ['id' => 7,'pid'=>0,'cid'=>2,'name'=>'name'],
];
//查找一级级元素
foreach($arr as $row){
if($row['pid'] == 0 && $row['cid'] ==0 ){
$newArray[] = $row;
}
}
//生成二级联动数组
foreach($arr as $row){
foreach($newArray as $key=>$newRow){
if($row['pid'] == $newRow['id'] ){
$newArray[$key]['children'][] = $row;
}
}
}
//查找三级元素
foreach($arr as $k=>$v){
if($v['cid'] != 0){
$third[] = $v;
}
}
//生成三级联动数组
foreach($newArray as $k=>$v) {
foreach ($v['children'] as $ke => $value) {
foreach ($third as $key => $val) {
if ($val['cid'] == $value['id']){
$newArray[$k]['children'][$ke]['children'][] = $val;
}else{
$newArray[$k]['children'][$ke]['children'] = [];
}
}
}
}
//反之 将三级联动数组变成一维数组
//取出一级数组
foreach($newArray as $v){
unset($v['children']);
$data[] = $v;
}
//取出二级数组
foreach($newArray as $v){
foreach($v['children'] as $val){
unset($val['children']);
$data1[] = $val;
}
}
//取出三级
foreach($newArray as $v){
foreach($v['children'] as $val){
foreach($val['children'] as $value){
$data2[] = $value;
}
}
}
//合并数组
$result = array_merge($data,$data1,$data2);
sort($result);//进行排序
一维数组转为三级联动数组
最新推荐文章于 2023-05-17 15:58:34 发布