现在是少女时代,以后是少女时代,永远是少女时代!
sone :少时的假粉丝

PHP无限级分类实现方法



PHP使用引用实现无限级分类,层次级包含返回子类、核心实现代码和示例demo。


1、实现代码

/**
 * @description 无限极分类实现
 * @author Holyrisk
 * @date 2021/4/22 22:41
 * @param        $list  需要被处理的数组
 * @param string $pk id
 * @param string $pid 父级id
 * @param string $child 子级名称
 * @param int    $root 顶级分类的值
 * @return array
 */
public function buildTree($list, $pk='id', $pid='pid', $child='_child', $root=0){

    $tree = array();
    $packData = array();
    foreach ($list as $data) {
        $packData[$data[$pk]] = $data;
    }

    foreach ($packData as $key=>$val){
        if($val[$pid] == $root){
            $tree[] = &$packData[$key];
        }else{
            $packData[$val[$pid]][$child][] = &$packData[$key];
        }
    }

    return $tree;
}

2、示例demo 、在thinkphp5中 测试


1)在index模块下的test控制器 访问 index方法 调用 代码

<?php

namespace app\index\controller;

use think\Controller;

class Test extends Controller
{
    public function index()
    {
        $arr = [];

        $arr[] = [
            'id' => 1,
            'pid' => 0,
            'title' => "我是父级",
        ];
        $arr[] = [
            'id' => 2,
            'pid' => 1,
            'title' => "我是父级的二级",
        ];
        $arr[] = [
            'id' => 3,
            'pid' => 1,
            'title' => "我是父级的二级",
        ];
        $arr[] = [
            'id' => 4,
            'pid' => 3,
            'title' => "我是父级的三级",
        ];
        $result = $this->buildTree($arr);
        return json($result);

    }

    /**
     * @description 无限极分类实现
     * @author Holyrisk
     * @date 2021/4/22 22:41
     * @param        $list  需要被处理的数组
     * @param string $pk id
     * @param string $pid 父级id
     * @param string $child 子级名称
     * @param int    $root 顶级分类的值
     * @return array
     */
    public function buildTree($list, $pk='id', $pid='pid', $child='_child', $root=0){

        $tree = array();
        $packData = array();
        foreach ($list as $data) {
            $packData[$data[$pk]] = $data;
        }

        foreach ($packData as $key=>$val){
            if($val[$pid] == $root){
                $tree[] = &$packData[$key];
            }else{
                $packData[$val[$pid]][$child][] = &$packData[$key];
            }
        }

        return $tree;
    }

}

2)浏览器 访问

https://article.wangshengxian.com/index/test

QQ图片20210422005026.png


琼ICP备16001221号-1