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
    }

    生活步步是坎坷,笑到最后是大哥。
  • 相关阅读:
    360抢票王验证码自动识别真的那么牛吗?
    wpf 的各个template
    HTML/CSS实现的一个列表页
    泛型约束和利用反射修改对象属性的值
    KindEditor富文本编辑器, 从客户端中检测到有潜在危险的 Request.Form 值
    检查对象是否为NULL或者为Empty
    【笔记】WPF实现ViewPager引导界面效果及问题汇总
    【笔记】WPF之模板控件应用
    【笔记】W3C CSS关键属性
    【转】Web标准中的常见问题
  • 原文地址:https://www.cnblogs.com/zhangbobo/p/9761814.html
Copyright © 2011-2022 走看看