PHP怎样实现递归按层级查找数据?
Admin 2021-12-02 群英技术资讯 1829 次浏览
这篇文章给大家分享的是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 要查询的数据
* @param int $pid 父级id
*/
public function recursion($data, $pid = 0)
{
static $child = []; // 定义存储子级数据数组
foreach ($data as $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使用递归来按层级查找数据的介绍,上述示例具有一定的借鉴价值,有需要的朋友可以参考学习,希望对大家学习PHP有帮助,想要了解更多可以继续浏览群英网络其他相关的文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
很多朋友想要知道PHP怎么样快速导出百万级数据到CSV或者EXCEL文件中,因此,这篇文章就给大家分享一下php百万级数据导出的操作,下面是导出思路,导出源码以及测试,有需要的朋友可以看一下,希望大家有收获。
循环执行代码块指定的次数,或者当指定的条件为真时循环执行代码块在您编写代码时,您经常需要让相同的代码块一次又一次地重复运行。我们可以在代码中使用循环语句来完成这个任务。在 PHP 中,提供了下列循环语句
这篇文章通过代码讲解了PHP中die()和sleep()函数的具体用法,文中给大家介绍的通俗易懂,零基础也能看得懂,对大家的学习或工作具有一定的参考价值
PHP组合模式是PHP设计模式中的一种,这篇文章主要就是分析PHP组合模式的定义和应用,下面有具体代码和注释,分享给有需要的朋友参考,下面我们就一起来看看。
这篇文章主要介绍了PHP简单实现图片格式转换(jpg转png,gif转png等),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008