根据指定条件快速查询出完整树形结构,如何实现?

假设有一树形数据表,id,name,pid

现在给定了一组ID:[5,8,9]

想查询出5、8、9的完整树形结构怎么实现最好?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 3

万变不离递归

8个月前 评论

先把所有id 查出来 用php在做递归.

还有这种需求,我个人是觉得完全没必要在去引一个什么包.

   /**
     * 递归生成树
     *
     * @param $items array
     * @param $pid int
     * @param $children bool
     * @param $title string
     *
     * @return array
     */
    function getTree($items , int $pid = 0, bool $children = true, string $title = 'children'): array
    {

        //  每次都声明一个新数组用来放子元素
        $tree = [];

        foreach( $items as $item ){
            //  匹配子记录
            if( $item['pid'] == $pid){
                //  递归获取子记录
                $item[$title] =  getTree( $items , $item['id'], $children, $title);
                if( $item[$title] == null && $children){
                    //  如果子元素为空则unset()进行删除,说明已经到该分支的最后一个元素了(可选)
                    unset($item[$title]);
                }
                //  将记录存入新数组
                $tree[] = $item;
            }
        }

        //  返回新数组
        return $tree;
    }
8个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!