PHP无限分类的类

  作者:bea

代码如下: <?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


代码如下:


<?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代码:


代码如下:


<?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>
"; }


PHP无限分类-PHP100代码


代码如下:


<?php
//无限分类,从子类找所有父类
//$id 子类ID
 function php100_xd($id){
   $sql="select * from fl where id='$id'";
   $q=mysql_query($sql);
   $rs=mysql_fetch_array($q);
   $rs['fid']==0 ? "" : fl($rs['fid']);
   echo $rs['name']."-";
   }

//读取所有父类下面的子类
//$f顶级分类从什么开始,$s样式
 function php100_dx($f=0,$s=""){
   $sql="select * from fl where fid=$f";
   $q=mysql_query($sql);
   $s=$s."-";
   while($rs=mysql_fetch_array($q)){
     echo "<br>$s".$rs['name'];
  flt($rs['id'],$s);
     }
   }





有用  |  无用

猜你喜欢