首页 > 作文

PHP使用递归按层级查找数据

更新时间:2023-04-07 20:40:50 阅读: 评论:0

今天主要介绍一下使用递归来按层级查找数据。
原理挺简单的,主要是通过父级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数组            unt($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"  }]

本文发布于:2023-04-07 20:40:48,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/36df3912506b3f08eed2733185c9695d.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:PHP使用递归按层级查找数据.doc

本文 PDF 下载地址:PHP使用递归按层级查找数据.pdf

标签:递归   数据   数组   层级
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图