php无限循环分类,php实现无限分类功能

c04259b53ad9ffed537a53e2258f0a05.png

应用场景

导航栏分类(如商品、课程、城市等)文件夹数据库设计

主要的三个字段:主键id、父级id、名称title。

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;

数据表数据

40259435e1ff9bed7ac572b7e260025c.png

逻辑

d15797842a28f2fbeb5e900bdd20be44.png

判断依据是:子类的父级id是否等于父级的id

代码实现

// 连接数据库

$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) {

// 判断子类的父级id 是否等于 父级的id

if($value['pid'] == $pid){

$value['level'] = $level;

$list[] = $value;

unset($arr[$key]); // 删除已排好的数据,减少循环次数

getTree($arr,$value['id'],$level+1); // 递归函数

}

}

return $list;

}

结果展示

90b9940a19b6c2819254ede4e6578411.png

这只是简单的实现无限分类功能,虽然在项目开发中还会有其他细节要注意,但是逻辑思路都是一样的。

「实例」php打印星星金字塔

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值