• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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函数mkdir实现递归创建层级目录
    • PHP递归实现层级树状展开
    上一篇:php和js实现根据子网掩码和ip计算子网功能示例
    下一篇:在Laravel中使用MongoDB的方法示例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PHP使用递归按层级查找数据的方法 PHP,使用,递归,按,层级,查找,