猿问

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

$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,递归来获取上级的所有信息?是否还有不通过递归的方式可以快速获取的?
HUX布斯
浏览 243回答 2
2回答

慕姐4208626

for(variin$all){if($id==$all[i][0]){//具体内容return$all[i][1]//或者return$all[i][2]}}//这样递归有什么问题吗?为什么不能使用递归呢?

收到一只叮咚

可以先对$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);
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答