PHP使用递归按层级查找数据的方法
今天主要介绍一下使用递归来按层级查找数据。
原理挺简单的,主要是通过父级id一级一级的循环查找子级,使用PHP循环代码也很容易实现,不过如果层级越多,PHP重复代码也越多,这时可以使用递归来实现这功能。
1、首先查出要使用的数据组成一个数组(避免递归里查询数据库,之后根据这个数组组成自己需要的数据就可以了)
比如得到如下数据:
$data=[ ['id'=>'1','pid'=>'0','dsp'=>'1'], ['id'=>'2','pid'=>'0','dsp'=>'2'], ['id'=>'3','pid'=>'0','dsp'=>'3'], ['id'=>'4','pid'=>'1','dsp'=>'1-4'], ['id'=>'5','pid'=>'4','dsp'=>'1-4-5'], ['id'=>'6','pid'=>'5','dsp'=>'1-4-5-6'], ['id'=>'7','pid'=>'3','dsp'=>'3-7'], ['id'=>'8','pid'=>'2','dsp'=>'2-8'], ['id'=>'9','pid'=>'1','dsp'=>'1-9'], ['id'=>'10','pid'=>'4','dsp'=>'1-4-10'], ];
2、接下来使用递归重组数据,使数据按层级显示。
/** *根据父级id查找子级数据 *@param$data要查询的数据 *@paramint$pid父级id */ publicfunctionrecursion($data,$pid=0) { static$child=[];//定义存储子级数据数组 foreach($dataas$key=>$value){ if($value['pid']==$pid){ $child[]=$value;//满足条件的数据添加进child数组 unset($data[$key]);//使用过后可以销毁 $this->recursion($data,$value['id']);//递归调用,查找当前数据的子级 } } return$child; }
得到结果:
[ { "id":"1", "pid":"0", "dsp":"1" }, { "id":"4", "pid":"1", "dsp":"1-4" }, { "id":"5", "pid":"4", "dsp":"1-4-5" }, { "id":"6", "pid":"5", "dsp":"1-4-5-6" }, { "id":"10", "pid":"4", "dsp":"1-4-10" }, { "id":"9", "pid":"1", "dsp":"1-9" }, { "id":"2", "pid":"0", "dsp":"2" }, { "id":"8", "pid":"2", "dsp":"2-8" }, { "id":"3", "pid":"0", "dsp":"3" }, { "id":"7", "pid":"3", "dsp":"3-7" } ]
总结
以上所述是小编给大家介绍的PHP使用递归按层级查找数据的方法,希望对大家有所帮助!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。