网学网PHP编辑为广大网友搜集整理了:表格展示无限级分类(PHP版)绩等信息,祝愿广大网友取得需要的信息,参考学习。
TreeTable通过对单元格的行合并和列合并实现了无限层级也能较好的展示层级架构。
1.构建ID/PID/NAME的数组,后期可通过数据库生成的动态数据。Tree算法请点击
复制代码 代码如下:
array(
* 1 => array(''id''=>''1'',''parentid''=>0,''name''=>''一级栏目一''),
* 2 => array(''id''=>''2'',''parentid''=>0,''name''=>''一级栏目二''),
* 3 => array(''id''=>''3'',''parentid''=>1,''name''=>''二级栏目一''),
* 4 => array(''id''=>''4'',''parentid''=>1,''name''=>''二级栏目二''),
* 5 => array(''id''=>''5'',''parentid''=>2,''name''=>''二级栏目三''),
* 6 => array(''id''=>''6'',''parentid''=>3,''name''=>''三级栏目一''),
* 7 => array(''id''=>''7'',''parentid''=>3,''name''=>''三级栏目二'')
* )
2. 导入TreeTable类库。
复制代码 代码如下:
import(''@.ORG.Util.TableTree''); //Thinkphp导入方法
3. 生成TreeTable HTML代码
复制代码 代码如下:
$treeTable->init($treearr);
echo $treeTable->get_treetable();
注意:get_treetable()只生产表体部门,<TALBE></TABLE>请自行构建。
完整代码
复制代码 代码如下:
<?php
/**
* File name: TreeTable.class.php
* Author: run.gao 312854458@qq.com Date: 2012-07-24 23:22 GMT+8
* Description: 通用的表格无限级分类
* */
/**
* 表格展示无限分类是将无线分类已表格的形式表现出来,更好的能体现出分类的所属关系
* 使用方法:
* 1. 实例化分类
* $treeTable = new TreeTable();
* 2. 初始化分类,$treearr必须是一个多维数组且包含 id,parentid,name字段
* $treeTable->init($treearr);
* 3. 获取无限分类HTML代码
* echo $treeTable->get_treetable();
* */
class TreeTable {
/**
* 生成树型结构所需要的2维数组
* @var array
*/
public $arr = array();
/**
* 表格列数
* @var int
*/
public $columns = 0;
/**
* 表格行数
* @var int
*/
public $rows = 0;
/**
* 初始化TreeTable数据
* @param array 2维数组
* array(
* 1 => array(''id''=>''1'',''parentid''=>0,''name''=>''一级栏目一''),
* 2 => array(''id''=>''2'',''parentid''=>0,''name''=>''一级栏目二''),
* 3 => array(''id''=>''3'',''parentid''=>1,''name''=>''二级栏目一''),
* 4 => array(''id''=>''4'',''parentid''=>1,''name''=>''二级栏目二''),
* 5 => array(''id''=>''5'',''parentid''=>2,''name''=>''二级栏目三''),
* 6 => array(''id''=>''6'',''parentid''=>3,''name''=>''三级栏目一''),
* 7 => array(''id''=>''7'',''parentid''=>3,''name''=>''三级栏目二'')
* )
*/
public function init($arr=array()){
if(!is_array($arr)) return false;
foreach ($arr as $k=>$v) {
$this->arr[$v[''id'']] = $v;
}
foreach ($this->arr as $k => $v){
$this->arr[$k][''column''] = $this->get_level($v[''id'']); // Y轴位置
$this->arr[$k][''arrchildid''] = $this->get_arrchildid($v[''id'']); // 所有子节点
$this->arr[$k][''arrparentid''] = $this->get_arrparentid($v[''id'']); // 所有父节点
$this->arr[$k][''child_bottom_num''] = $this->get_child_count($v[''id'']); // 所有底层元素节点
}
$this->columns = $this->get_columns(); // 总行数
$this->rows = $this->get_rows(); // 总列数