PHP无限分类的类 - 我爱贝贝 - 金东浩官方网站 - welcome to old.bbmy.net

PHP无限分类的类 [金东浩官方网站版权所有]

2006年12月31日 | Category: » | by: 贝爸 | 本文包含金东浩PHP无限分类的类照片

PHP代码:--------------------------------------------------------------------------------


<?php

/**
* @author        YangHuan
* @datetime    
* @version        1.0.0
*/

/**
* Short description.
*
* Detail description
* @author      
* @version      1.0
* @copyright    
* @access       public
*/
class Tree
{
   /**
    * Description
    * @var      
    * @since     1.0
    * @access    private
    */
   var $data    = array(

   
   /**
    * Description
    * @var      
    * @since     1.0
    * @access    private
    */
   var $child    = array(-1=>array()

   
   /**
    * Description
    * @var      
    * @since     1.0
    * @access    private
    */
   var $layer    = array(-1=>-1

   
   /**
    * Description
    * @var      
    * @since     1.0
    * @access    private
    */
   var $parent    = array(


   /**
    * Short description.
    *
    * Detail description
    * @param      none
    * @global     none
    * @since      1.0
    * @access     private
    * @return     void
    * @update     date time
   */
   function Tree ($value)
   {
       $this->setNode(0, -1, $value

   } // end func

   /**
    * Short description.
    *
    * Detail description
    * @param      none
    * @global     none
    * @since      1.0
    * @access     private
    * @return     void
    * @update     date time
   */
   function setNode ($id, $parent, $value)
   {
       $parent = $parent?$parent:0;

       $this->data[$id]            = $value;
       $this->child[$id]            = array(

       $this->child[$parent][]        = $id;
       $this->parent[$id]            = $parent;

       if (!isset($this->layer[$parent]))
       {
           $this->layer[$id] = 0;
       }
       else
       {
           $this->layer[$id] = $this->layer[$parent] + 1;
       }
   } // end func
   
   /**
    * Short description.
    *
    * Detail description
    * @param      none
    * @global     none
    * @since      1.0
    * @access     private
    * @return     void
    * @update     date time
   */
   function getList (&$tree, $root= 0)
   {
       foreach ($this->child[$root] as $key=>$id)
       {
           $tree[] = $id;

           if ($this->child[$id]) $this->getList($tree, $id

       }
   } // end func

   /**
    * Short description.
    *
    * Detail description
    * @param      none
    * @global     none
    * @since      1.0
    * @access     private
    * @return     void
    * @update     date time
   */
   function getValue ($id)
   {
       return $this->data[$id];
   } // end func

   /**
    * Short description.
    *
    * Detail description
    * @param      none
    * @global     none
    * @since      1.0
    * @access     private
    * @return     void
    * @update     date time
   */
   function getLayer ($id, $space = false)
   {
       return $space?str_repeat($space, $this->layer[$id]):$this->layer[$id];
   } // end func

   /**
    * Short description.
    *
    * Detail description
    * @param      none
    * @global     none
    * @since      1.0
    * @access     private
    * @return     void
    * @update     date time
   */
   function getParent ($id)
   {
       return $this->parent[$id];
   } // end func
   
   /**
    * Short description.
    *
    * Detail description
    * @param      none
    * @global     none
    * @since      1.0
    * @access     private
    * @return     void
    * @update     date time
   */
   function getParents ($id)
   {
       while ($this->parent[$id] != -1)
       {
           $id = $parent[$this->layer[$id]] = $this->parent[$id];
       }

       ksort($parent

       reset($parent


       return $parent;
   } // end func
   
   /**
    * Short description.
    *
    * Detail description
    * @param      none
    * @global     none
    * @since      1.0
    * @access     private
    * @return     void
    * @update     date time
   */
   function getChild ($id)
   {
       return $this->child[$id];
   } // end func

   
   /**
    * Short description.
    *
    * Detail description
    * @param      none
    * @global     none
    * @since      1.0
    * @access     private
    * @return     void
    * @update     date time
   */
   function getChilds ($id = 0)
   {
       $child = array($id

       $this->getList($child, $id


       return $child;
   } // end func
} // end class

?>

--------------------------------------------------------------------------------

使用方法

PHP代码:--------------------------------------------------------------------------------


<?

//new Tree(根目录的名字

//根目录的ID自动分配为0
$Tree = new Tree(''根目录''

//setNode(目录ID,上级ID,目录名字

$Tree->setNode(1, 0, ''目录1''

$Tree->setNode(2, 0, ''目录2''

$Tree->setNode(3, 0, ''目录3''

$Tree->setNode(4, 3, ''目录3.1''

$Tree->setNode(5, 3, ''目录3.2''

$Tree->setNode(6, 3, ''目录3.3''

$Tree->setNode(7, 2, ''目录2.1''

$Tree->setNode(8, 2, ''目录2.2''

$Tree->setNode(9, 2, ''目录2.3''

$Tree->setNode(10, 6, ''目录3.3.1''

$Tree->setNode(11, 6, ''目录3.3.2''

$Tree->setNode(12, 6, ''目录3.3.3''


//getChilds(指定目录ID

//取得指定目录下级目录.如果没有指定目录就由根目录开始
$category = $Tree->getChilds(


//遍历输出
foreach ($category as $key=>$id)
{
   echo $Tree->getLayer($id, ''|-'').$Tree->getValue($id)."<br />\\n";
}


--------------------------------------------------------------------------------

输出的结果

PHP代码:--------------------------------------------------------------------------------
根目录
|-目录1
|-目录2
|-|-目录2.1
|-|-目录2.2
|-|-目录2.3
|-目录3
|-|-目录3.1
|-|-目录3.2
|-|-目录3.3
|-|-|-目录3.3.1
|-|-|-目录3.3.2
|-|-|-目录3.3.3

本文来自 我爱贝贝[www.bbmy.net]-金东浩官方网站,如若转载注明出处。


金东浩博客随机日志
金东浩博客之表情集
表情集
金东浩博客之生态公园
生态公园
金东浩博客之补平安夜的袜子
补平安夜的袜子
金东浩博客之贝妈的生日礼物
贝妈的生日礼物
金东浩博客之小贝的脑筋急转弯
小贝的脑筋急转弯
金东浩博客之小贝雷语之你说的有道理
小贝雷语之你说的
金东浩博客之原来是彩铃
原来是彩铃
金东浩博客之年三十回外婆家
年三十回外婆家
金东浩博客之千丝万缕虾
千丝万缕虾
金东浩博客之理发
理发
金东浩博客之小年
小年
金东浩博客之生日
生日
金东浩博客之二月二龙抬头
二月二龙抬头
金东浩博客之画画班
画画班
金东浩博客之三八节送给妈妈的礼物
三八节送给妈妈的
金东浩博客之最爱睡姿
最爱睡姿
金东浩博客之清明三天假
清明三天假
金东浩博客之油菜花
油菜花

金东浩日记Tags:
金东浩日记评论: 0 | 金东浩日记引用: 0 | 金东浩日记阅读: 3522
发表评论
昵称 [注册]        网址
密码 游客无需密码     电邮
打开HTML 打开UBB 打开表情 隐藏 记住我