实现多级树型菜单是Web开发中常见的需求,下面是用PHP实现多级树型菜单的完整攻略:
一、准备数据
首先需要准备好数据,这里以一个简单的示例为例:
$id = 1;
$data = [
['id'=>1,'name'=>'菜单1','parent_id'=>0],
['id'=>2,'name'=>'子菜单1-1','parent_id'=>1],
['id'=>3,'name'=>'子菜单1-2','parent_id'=>1],
['id'=>4,'name'=>'子菜单1-2-1','parent_id'=>3],
['id'=>5,'name'=>'子菜单1-2-2','parent_id'=>3],
['id'=>6,'name'=>'菜单2','parent_id'=>0],
['id'=>7,'name'=>'菜单3','parent_id'=>0],
['id'=>8,'name'=>'子菜单3-1','parent_id'=>7],
['id'=>9,'name'=>'子菜单3-1-1','parent_id'=>8],
];
二、构建树型结构
根据数据构建树型结构,这里使用递归的方式,代码如下:
/**
* 构建树形结构
* @param array $data 数据
* @param integer $parent_id 父级ID
* @param integer $level 层级
* @return array
*/
function buildTree($data, $parent_id = 0, $level = 0)
{
$tree = [];
foreach ($data as $key => $value) {
if ($value['parent_id'] == $parent_id) {
$value['level'] = $level;
$value['child'] = buildTree($data,$value['id'],$level+1);
$tree[] = $value;
}
}
return $tree;
}
$tree = buildTree($data);
三、生成HTML代码
树型结构构建完成后,最后一步就是生成HTML代码,代码如下:
/**
* 生成HTML代码
* @param array $tree 树形结构
* @return string
*/
function buildHtml($tree)
{
$html = '';
foreach ($tree as $key => $value) {
$html .= str_repeat(' ', $value['level']);
$html .= '<a href="#">'.$value['name'].'</a><br>';
if (!empty($value['child'])) {
$html .= buildHtml($value['child']);
}
}
return $html;
}
echo buildHtml($tree);
以上就是用PHP实现多级树型菜单的完整攻略,下面附上运行示例:
- 基础示例:https://gliese-q.github.io/php-tree-menu/basic.html
- 带Icon的示例:https://gliese-q.github.io/php-tree-menu/icon.html
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用PHP实现多级树型菜单 - Python技术站