转载 PHP 树型数据

/* 原帖:http://bbs.csdn.net/topics/390364669 */

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
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值