为了账号安全,请及时绑定邮箱和手机立即绑定

求重组数组 有点递归的意思 难住了

/ 猿问

求重组数组 有点递归的意思 难住了

皈依舞 2019-05-25 17:14:42
$arr=[
["id"=>"21",
"pid"=>"0",
"name"=>"轮播图管理",
"model"=>""],
["id"=>"22",
"pid"=>"21",
"name"=>"轮播图分类",
"model"=>""],
["id"=>"23",
"pid"=>"22",
"name"=>"轮播图分类列表",
"model"=>"Carousel/index_"],
["id"=>"24",
"pid"=>"22",
"name"=>"添加一级分类",
"model"=>"Carousel/add_"],
["id"=>"25",
"pid"=>"0",
"name"=>"广告管理",
"model"=>NULL],
["id"=>"26",
"pid"=>"25",
"name"=>"广告列表",
"model"=>"Advert/index"],
["id"=>"27",
"pid"=>"25",
"name"=>"广告添加",
"model"=>"Advert/add"]
];
组装之后的样子:
$arr=[
["id"=>"21"
"pid"=>"0"
"name"=>"轮播图管理"
"model"=>""
"content"=>
["id"=>"22"
"pid"=>"21"
"name"=>"轮播图分类"
"model"=>""
"content"=>
["id"=>"23"
"pid"=>"22"
"name"=>"轮播图分类列表"
"model"=>"Carousel/index_"],
["id"=>"24"
"pid"=>"22"
"name"=>"添加一级分类"
"model"=>"Carousel/add_"]
]
],
["id"=>"25"
"pid"=>"0"
"name"=>"广告管理"
"model"=>NULL
"content"=>
["id"=>"26"
"pid"=>"25"
"name"=>"广告列表"
"model"=>"Advert/index"],
["id"=>"27"
"pid"=>"25"
"name"=>"广告添加"
"model"=>"Advert/add"]
]
];
                    
查看完整描述

2 回答

?
HUWWW
$arr=[...];
$result=[];
$arr=array_column($arr,NULL,'id');
foreach($arras$item){
if(empty($arr[$item['pid']])){
$result[]=&$arr[$item['id']];
}else{
if(empty($arr[$item['pid']]['content']))
$arr[$item['pid']]['content']=[];
$arr[$item['pid']]['content'][]=&$arr[$item['id']];
}
}
var_export($result);
输出
array(0=>array('id'=>'21','pid'=>'0','name'=>'轮播图管理','model'=>'','content'=>array(0=>array('id'=>'22','pid'=>'21','name'=>'轮播图分类','model'=>'','content'=>array(0=>array('id'=>'23','pid'=>'22','name'=>'轮播图分类列表','model'=>'Carousel/index_',),1=>array('id'=>'24','pid'=>'22','name'=>'添加一级分类','model'=>'Carousel/add_',),),),),),1=>array('id'=>'25','pid'=>'0','name'=>'广告管理','model'=>NULL,'content'=>array(0=>array('id'=>'26','pid'=>'25','name'=>'广告列表','model'=>'Advert/index',),1=>array('id'=>'27','pid'=>'25','name'=>'广告添加','model'=>'Advert/add',),),),)
                            
查看完整回答
反对 回复 2019-05-25
?
慕神8447489
随手写的,还未调试。
functionappend_item($root,$item){
foreach($rootas$key=>$r){
if($item['pid']==$r['pid']){
$root[$key]['content']=$item;
return[$root,true];
}
if(!empty($r['content'])){
list($content,$ok)=append_item($r['content'],$item);
if($ok){
$root[$key]['content']=$content;
return[$root,true];
}
}
}
return[$root,false];
}
functionmove_items($root,$arr){
foreach($arras$key=>$item){
if($item['pid']==0){
$root[]=$item;
unset($item[$key]);
}else{
list($root,$ok)=append_item($root,$item);
if($ok)unset($item[$key]);
}
}
return[$root,$arr];
}
$root=[];
$arr[....];
while(count($arr)){
list($root,$arr)=move_items($root,$arr);
}
                            
查看完整回答
反对 回复 2019-05-25

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信