最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • PHP常用的分类树形结构 可实现无限分级

    在很多系统中会有层级体系,特别是在各种管理系统的菜单、分类、部门等相关模块。一般而言,系统都会把这些对象保存在数据库中,并用一个pid字段去记录该对象的父级对象。那么问题来了,当从数据库中重新查出对象列表后,如何重新恢复其层级关系呢?下面的这个函数可以帮到你:

    /**
     * 数组层级缩进转换
     * @param array $array 源数组
     * @param int   $pid
     * @param int   $level
     * @return array
     */
    function array2level($array, $pid = 0, $level = 1) {
        static $list = [];
        foreach ($array as $v) {
            if ($v['pid'] == $pid) {
                $v['level'] = $level;
                $list[] = $v;
                array2level($array, $v['id'], $level + 1);
            }
        }
        return $list;
    }

    获取数据如下图:

    数据图

    使用效果如下图:

    效果图

    /**
     * 构建层级(树状)数组
     * @param array  $array          要进行处理的一维数组,经过该函数处理后,该数组自动转为树状数组
     * @param string $pid_name       父级ID的字段名
     * @param string $child_key_name 子元素键名
     * @return array|bool
     */
    function array2tree(&$array, $pid_name = 'pid', $child_key_name = 'children') {
        $counter = array_children_count($array, $pid_name);
        if (!isset($counter[0]) || $counter[0] == 0) {
            return $array;
        }
        $tree = [];
        while (isset($counter[0]) && $counter[0] > 0) {
            $temp = array_shift($array);
            if (isset($counter[$temp['id']]) && $counter[$temp['id']] > 0) {
                array_push($array, $temp);
            } else {
                if ($temp[$pid_name] == 0) {
                    $tree[] = $temp;
                } else {
                    $array = array_child_append($array, $temp[$pid_name], $temp, $child_key_name);
                }
            }
            $counter = array_children_count($array, $pid_name);
        }
        return $tree;
    }

    获取数据如下图:

    数据图

    使用效果如下图:

    效果图

    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » PHP常用的分类树形结构 可实现无限分级
    • 7会员总数(位)
    • 25846资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 293稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情