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

求大佬指点哈!这样的数组,如何通过下级的id,递归来获取所有的上级信息

求大佬指点哈!这样的数组,如何通过下级的id,递归来获取所有的上级信息

HUX布斯 2019-06-20 10:15:45
$all=[['id'=>1,'pid'=>0,'title'=>'上海公司'],['id'=>2,'pid'=>1,'title'=>'经理'],['id'=>3,'pid'=>2,'title'=>'主管'],['id'=>4,'pid'=>0,'title'=>'北京公司'],['id'=>5,'pid'=>4,'title'=>'经理'],['id'=>6,'pid'=>5,'title'=>'主管'],];functiongetInfo($id,$all){//如何通过下级的ID,递归来获取上级的所有信息?}getInfo(3);getInfo(6);数组如上getInfo(3);getInfo(6);如何通过下级的ID,递归来获取上级的所有信息?是否还有不通过递归的方式可以快速获取的?
查看完整描述

2 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

for(variin$all){
if($id==$all[i][0]){
//具体内容
return$all[i][1]
//或者
return$all[i][2]
}
}//这样递归有什么问题吗?为什么不能使用递归呢?
                            
查看完整回答
反对 回复 2019-06-20
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

可以先对$all数组先做一下预处理
$all=[
['id'=>1,'pid'=>0,'title'=>'上海公司'],
['id'=>2,'pid'=>1,'title'=>'经理'],
['id'=>3,'pid'=>2,'title'=>'主管'],
['id'=>4,'pid'=>0,'title'=>'北京公司'],
['id'=>5,'pid'=>4,'title'=>'经理'],
['id'=>6,'pid'=>5,'title'=>'主管'],
];
functionindex($array,$key)
{
$result=[];
foreach($arrayas$element){
if(isset($element[$key])&&$element[$key]){
$value=$element[$key];
$result[$value]=$element;
}
}
return$result;
}
$all=index($all,'id');
functiongetInfo($id,$all){
returnisset($all[$id])?$all[$id]:null;
}
$a=getInfo(3,$all);
$b=getInfo(6,$all);
var_dump($a);
var_dump($b);
                            
查看完整回答
反对 回复 2019-06-20
  • 2 回答
  • 0 关注
  • 242 浏览
慕课专栏
更多

添加回答

举报

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