最近問無限分類的類樹問題比較多,所以一高興自己寫了乙個,我剛寫完的,大家用用看,看看怎麼實現起來更快,更簡單,把你的樹也貼出來(要只查詢一次資料庫的)
這是一棵分類列表的類樹, 支援無限分類
乙個分類下面可以同時有"包含子類的分類"和"最終分類";
唯一的優點是*****只需要進行一次的資料庫*****查詢.
樣子不是很好看,不過可以自定義修改,可以自己定義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...