zoukankan      html  css  js  c++  java
  • php 实现树状无限分类查询


    class Tree
    {
        public $data=array();
        public $cateArray=array();

        function Tree()
        {

        }
        function setNode ($id, $parent, $value)
        {
            $parent = $parent?$parent:0;
            $this->data[$id] = $value;
            $this->cateArray[$id] = $parent;
        }
        function getChildsTree($id=0)
        {
            $childs=array();
            foreach ($this->cateArray as $child=>$parent)
            {
                if ($parent==$id)
                {
                    $childs[$child]=$this->getChildsTree($child);
                }
            }
            return $childs;
        }
        function getParentsTree($id=0)
        {
            $parents=array();
            foreach ($this->cateArray as $child=>$parent)
            {
                if ($child ==$id)
                {
                    $parents[$parent]=$this->getParentsTree($parent);
                }
            }
            return $parents;
        }
        function getChilds($id=0)
        {
            $childArray=array();
            $childs=$this->getChild($id);
            foreach ($childs as $child)
            {
                $childArray[]=$child;
                $childArray=array_merge($childArray,$this->getChilds($child));
            }
            return $childArray;
        }
        
        function getChild($id)
        {
            $childs=array();
            foreach ($this->cateArray as $child=>$parent)
            {
            if ($parent==$id)
            {
                $childs[$child]=$child;
            }
            }
            return $childs;
        }
        
        function getParents($id)
        {
            $parentArray=array();
            $parents=$this->getParent($id);
            foreach ($parents as $parent)
            {
                $parentArray[]=$parent;
                $parentArray=array_merge($parentArray,$this->getParents($parent));
            }
            return $parentArray;
        }
        
        function getParent($id)
        {
            $parents=array();
            foreach ($this->cateArray as $child=>$parent)
            {
            if ($child==$id)
            {
                $parents[$parent]=$parent;
            }
            }
            return $parents;
        }
        //单线获取父节点
        function getNodeLever($id)
        {
            $parents=array();
            if (key_exists($this->cateArray[$id],$this->cateArray))
            {
                $parents[]=$this->cateArray[$id];
                $parents=array_merge($parents,$this->getNodeLever($this->cateArray[$id]));
            }
            return $parents;
        }
        function getLayer($id,$preStr='|-')
        {
            return str_repeat($preStr,count($this->getNodeLever($id)));
        }
        function getValue ($id)
        {
            return $this->data[$id];
        } // end func
    }

    生活步步是坎坷,笑到最后是大哥。
  • 相关阅读:
    Vue2 组件注册
    Vue2 CSS 过渡
    Vue2 过滤器
    Vue2 路由
    网页一次滚动一屏幕效果
    JavaScript作用域-声明提升(个人总结)
    JS函数作用域提升
    如何以计算机的方式去思考
    常用Git命令总结
    关于RBAC(Role-Base Access Control)的理解(转)
  • 原文地址:https://www.cnblogs.com/zhangbobo/p/9761814.html
Copyright © 2011-2022 走看看