一、应用场景
1、导航栏
2、分类(如商品、城市、课程等)
3、文件夹
二、数据库设计
CREATE TABLE `t_cate` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`pid` int(11) NOT NULL COMMENT '父级id',
`title` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
数据表数据
三、逻辑思路
四、代码实现
// 连接数据库
$db = mysqli_connect('127.0.0.1','root','123456','test');
$sql = 'SELECT * FROM t_cate';
$exe_res = mysqli_query($db, $sql);
$data = mysqli_fetch_all($exe_res,MYSQLI_ASSOC);
// print_r($data);
// 循环 判断 递归
function getTree($arr,$pid=0,$level=1){
static $list = [];
foreach ($arr as $key => $value) {
if($value['pid'] == $pid){
$value['level'] = $level;
$list[] = $value;
unset($arr[$key]); // 删除已排好的数据,减少循环次数
getTree($arr,$value['id'],$level+1);
}
}
return $list;
}
结果: