一棵php的類樹 支援無限分類

2022-09-29 18:57:09 字數 3479 閱讀 7696

最近問無限分類的類樹問題比較多,所以一高興自己寫了乙個,我剛寫完的,大家用用看,看看怎麼實現起來更快,更簡單,把你的樹也貼出來(要只查詢一次資料庫的)

這是一棵分類列表的類樹,  支援無限分類

乙個分類下面可以同時有"包含子類的分類"和"最終分類";

唯一的優點是*****只需要進行一次的資料庫*****查詢.

樣子不是很好看,不過可以自定義修改,可以自己定義css加裡面

快取方面還沒有作,可以自己補上 

下面例子的目錄結構是這樣的。 

¦--catagory.php                                       

¦--images----tree.jsp                           

¦--images----treeopen.gif                   

¦--images----treeclose.gif                 

¦--images----line.gif                           

/****************tree.jsp********************/ 

function  expand(id)else 

}  /****************catagory.php********************/ 

<?php  

define('catagory_tree_expend_none',0); 

define('catagory_tree_expend_all',1); 

class  catagory 

function  _init($tmpdata) 

$this->treedata  =  &$treedata; 

$this->treeplist  =  &$plevel; 

$this->treeclist  =  &$clevel; 

}  /* 

*  解析分類列表 

*  *param  $cataid  int  要解析的主分類的編號 

*/ 

function  parsenode($cataid=0) 

function  &_donode(&$result)else 

}  return  $nstr.$estr; 

}  function  &_parsenodetpl($cataid,  $inner) 

function  _parseelementtpl($cataid) 

function  _jsparse() 

/* 

*  展開分類$cataid 

*  *param  $cataid  int  要展開的分類的編號 

*/ 

function  parsecurrent($cataid) 

$this->currentstr  =  &$str; 

}  function  _parsecurrenttpl($cataid) 

/* 

*  解析當前分類的路徑 

*  *param  $cataid  int  要解析的主分類的編號 

*/ 

function  expand($cataid) 

$this->treestr  .=  ""; 

}  /* 

*  返回當前分類的路徑 

*/ 

function  getcurrentstr() 

/* 

*  返回分類的類樹 

*/ 

function  gettreestr() 

function  settpl($blocktpl,  $elementtpl,  $currenttpl,  $js) 

function  setimage($open,  $close,  $line) 

function  setexpend($expand) 

}  //分類的基礎資料的樣子如下: 

$data  =  array(array('id'=>1,  'name'=>'name1',  'pid'=>0,  'order'=>1), 

array('id'=>2,  'name'=>'name2',  'pid'=>1,  'order'=>1), 

array('id'=>3,  'name'=>'name3',  'pid'=>0,  'order'=>1), 

array('id'=>4,  'name'=>'name4',  'pid'=>3,  'order'=>1), 

array('id'=>5,  'name'=>'name5',  'pid'=>6,  'order'=>1), 

array('id'=>6,  'name'=>'name6',  'pid'=>2,  'order'=>1), 

array('id'=>7,  'name'=>'name7',  'pid'=>6,  'order'=>1), 

array('id'=>8,  'name'=>'name8',  'pid'=>3,  'order'=>1), 

array('id'=>9,  'name'=>'name9',  'pid'=>6,  'order'=>1), 

&www.cppcns.comnbsp;             array('id'=>10,  'name'=>'name10',  'pid'=>0,  'order'=>1),

array('id'=>11, 'name'=>'name11', 'pid'=>10, 'order'=>1),

array('id'=>12, 'name'=>'name12', 'pid'=>10, 'order'=>1),

array('id'=>13, 'name'=>'name13', 'pid'=>10, 'order'=>1),

array('id'=>14, 'name'=>'name14', 'pid'=>12, 'order'=>1),

array('id'=>15, 'name'=>'name15', 'pid'=>12, 'order'=>4),

); echo "";

$tree = new catagory($data);

echo "下面是當前分類的類樹";

//$tree->setexpend(1);

$tree->parsenode(0);

//$tree->parsenode(1)

//$tree->expand(9);

echo $tree->gettreestr();

echo "下面是當前分類(分類的編號是9)的路徑";

$tree->parsecurrent(9);

echo $tree->getcurrentstr();

本文標題: 一棵php的類樹(支援無限分類)

本文位址:

一棵受傷的樹

有乙個農場主為了方便拴牛,在莊園的一棵榆樹上箍了乙個鐵圈。隨著榆樹的長大,鐵圈慢慢嵌進了樹身,榆樹的表皮留下一道深深的傷痕。有一年,當地發生了一種奇怪的植物真菌疫病,方圓幾十公里的榆樹全部死亡,唯獨那顆箍了鐵圈的榆樹卻存活下來。為什麼這棵榆樹能倖存呢?植物學家對此產生了興趣,於是組織人員進行研究。結...

一棵樹是否為另一棵樹的子結構

輸入兩顆二叉樹a,b,判斷b是不是a的子結構。問題描述 給定兩個二叉樹的根節點,判斷第二樹是否是第乙個樹的子樹,如果是返回1,否則返回0.拿第二個樹的每個節點去和第乙個樹做匹配,如果某個節點匹配成功,就接著往下匹配,否則重新從第二個樹的的根節點開始。注意區別 測試用例 樹1 42 6 1 3 5 7...

如何判斷一棵樹是不是另一棵樹的子樹

package suanfatest class treenode treenode int value treenode int value,treenode leftchild,treenode rightchild public int getvalue public void setvalu...