傳入簡單的未經處理資料,可以得出節點間的N種關係,並能輸出樹狀的DOM 注意:請參考git.oschina.net上的最新代碼(點"源碼出處"連結)
- /**
- * 輸出無限分類,我自己寫的哦~
- *
- * @author binny_w@qq.com
- * @since 2013-09-24 AM
- */
- /* 使用樣本 */
- /*
- $arrAll = array(
- array('id' => 1, 'name' => '欄目分類_1', 'name_en' => 'cat_1', 'parent_id' => 0),
- array('id' => 2, 'name' => '欄目分類_2', 'name_en' => 'cat_2', 'parent_id' => 0),
- array('id' => 3, 'name' => '欄目分類_3', 'name_en' => 'cat_3', 'parent_id' => 1),
- array('id' => 4, 'name' => '欄目分類_4', 'name_en' => 'cat_4', 'parent_id' => 1),
- array('id' => 5, 'name' => '欄目分類_5', 'name_en' => 'cat_5', 'parent_id' => 2),
- array('id' => 6, 'name' => '欄目分類_6', 'name_en' => 'cat_6', 'parent_id' => 4),
- array('id' => 7, 'name' => '欄目分類_7', 'name_en' => 'cat_7', 'parent_id' => 6),
- array('id' => 8, 'name' => '欄目分類_8', 'name_en' => 'cat_8', 'parent_id' => 7),
- array('id' => 9, 'name' => '欄目分類_9', 'name_en' => 'cat_9', 'parent_id' => 6)
- );
- $objT = new TreeList($arrAll);
- print_r($objT->arrAll);
- print_r($objT->arrIdAll);
- print_r($objT->arrIdChildren);
- print_r($objT->arrIdSon);
- print_r($objT->arrIdLeaf);
- print_r($objT->arrIdRelation);
- print_r($objT->arrIdRelationSimple);
- print_r($objT->arrIdRoot);
- print_r($objT->arrIdBackPath);
- print($objT->getTable());
- print($objT->getSelect('cat', array(1, 8), true));
- */
- // !defined('IN_FRAME') && die('404 Page');
- class TreeList {
-
- /**
- * 分析出所有可能用到的資料
- */
- public $arrAll = array(); // 未經處理資料
- public $arrIdRelation = array(); // 按_ID作鍵名的多維關係
- public $arrIdRelationSimple = array(); // 按_ID作鍵名的多維關係的簡化,用來輸出樹狀圖
- public $arrIdAll = array(); // 將未經處理資料轉化成的_ID作鍵名的數組
- public $arrIdSon = array(); // 所有的父子關係
- public $arrIdLeaf = array(); // 葉子節點的_ID
- public $arrIdRoot = array(); // 根節點的_ID
- public $arrIdChildren = array(); // 每個節點下的子孫後代_ID
- public $arrIdBackPath = array(); // 每個節點回逆到根
- public $strItem = '
{$strSep}{$name}'; // 輸出樹的結構
-
- /**
- * 建構函式,傳入未經處理資料
- */
- public function __construct($arrData) {
- $this->arrAll = $arrData;
- $this->processData();
- }
-
- /**
- * 簡單的樹
- */
- public function getHtml() {
- return $this->genHtml();
- }
-
- /**
- * 用Table來畫樹
- */
- public function getTable() {
- $this->strItem = '
|