PHP实现多级表格
PHP实现多级表格的方法
使用数组嵌套结构
通过多维数组存储多级表格数据,数组的层级对应表格的层级关系。例如:
$data = [
['id' => 1, 'name' => '一级1', 'children' => [
['id' => 11, 'name' => '二级1'],
['id' => 12, 'name' => '二级2']
]],
['id' => 2, 'name' => '一级2']
];
递归输出表格
编写递归函数处理多级表格的HTML输出:
function renderTable($items, $level = 0) {
echo '<table border="1">';
foreach ($items as $item) {
echo '<tr>';
echo '<td style="padding-left: '.($level*20).'px">'.$item['name'].'</td>';
if (!empty($item['children'])) {
echo '</tr>';
renderTable($item['children'], $level+1);
} else {
echo '</tr>';
}
}
echo '</table>';
}
数据库存储方案
对于数据库存储的多级数据,常见方案包括:
- 邻接表模型:使用parent_id字段
- 嵌套集模型:使用left和right值
- 路径枚举:存储完整路径如"1/2/3"
邻接表查询示例:
// 查询所有数据并构建层级
$result = $pdo->query("SELECT id, name, parent_id FROM categories");
$items = [];
while ($row = $result->fetch()) {
$items[$row['id']] = $row;
}
前端交互增强
结合JavaScript实现折叠展开功能:
<script>
function toggleRow(rowId) {
document.querySelectorAll('.child-'+rowId).forEach(el => {
el.style.display = el.style.display === 'none' ? '' : 'none';
});
}
</script>
样式优化
通过CSS区分不同层级:
tr.level-0 { background-color: #f2f2f2; }
tr.level-1 { background-color: #e6e6e6; }
tr.level-2 { background-color: #d9d9d9; }
性能考虑
对于大型数据集:
- 实现懒加载机制
- 使用分页处理顶级项目
- 考虑缓存生成的HTML
以上方法可根据实际需求组合使用,构建灵活高效的多级表格展示方案。







