欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

php三种无限分类

程序员文章站 2022-04-12 19:35:37
无限分类,是指从一个最高分类开始,每个子分类都可以分出自己的若干个子分类,可以一直分下去,称为无限级分类; 下面是对省市县的无限极分类的列子。数据库如图: 代码示例如下: ......

无限分类,是指从一个最高分类开始,每个子分类都可以分出自己的若干个子分类,可以一直分下去,称为无限级分类;

下面是对省市县的无限极分类的列子。数据库如图:

php三种无限分类

代码示例如下:

/**
 * @description: 无限极分类一
 * @author: yang
 * @param $data  数据库数据
 * @param int $parent_id   父级id
 * @return array
 */
function gettree1($data, $parent_id = 0)
{
    $tree = array();
    foreach ($data as $k => $v) {
        if ($v["parent_id"] == $parent_id) {
            unset($data[$k]);
            if (!empty($data)) {
                $children = getcategory($data, $v["id"]);
                if (!empty($children)) {
                    $v["_child"] = $children;
                }
            }
            $tree[] = $v;
        }
    }
    return $tree;
}


/**
 * @description: 无限极分类二
 * @author: yang
 * @param $data   数据库数据
 * @param int $parent_id  父级id
 * @param int $level  等级
 * @return array
 */
function gettree2($data, $parent_id = 0, $level = 0)
{
    static $tree = array();
    foreach ($data as $k => $v) {
        if ($v["parent_id"] == $parent_id) {
            $v["level"] = $level;
            $tree[] = $v;
            gettree($data, $v["id"], $level + 1);
        }
    }
    return $tree;
}

/**
 * @description: 无限分类三:面包屑导航
 * @author: yang
 * @param $data  数据库数据
 * @param $id    分类id
 * @return array
 */
function getcrumbsbar($data, $id) {
    static $tree = array();
    foreach ($data as $k => $v) {
        if ($v["id"] == $id) {
            getcrumbsbar($data, $v["parent_id"]);
            $tree[] = $v;
        }
    }
    return $tree;
}