在tp框架下实现无限极分类、获取顶级id等方法

对于无限极分类,要查找一个分类的顶级分类听起来很复杂
其实只要弄清原理,也并不是那么令人望而生畏!
<?php $sql = "select id, pid from tablename "; // 查询后 将结果处理成 如下数组格式 $arr = [ // id => pid 1 => 0, // 省略... 6 => 1, // 省略... 12 =>6 ]; // 建议将这数组缓存起来 $id = 12; while($arr[$id]) { $id = $arr[$id]; } echo $id; // 1


注意:
1.其实无限极分类原理清晰后就会发现,其实id->pid关系紧密,pid顶级为0,故采用while循环是很好的解决办法!
2.当然对数组的格式处理也得明白了。

关于无限极菜单简单实现
1.先定义如下结构数组,当然数据库查询也可以处理成如下结构
$arr=array(
1=>array('id'=>'1','name'=>'北京','pid'=>'0'),
2=>array('id'=>'2','name'=>'上海','pid'=>'0'),
3=>array('id'=>'3','name'=>'浦东','pid'=>'2'),
4=>array('id'=>'4','name'=>'朝阳','pid'=>'1'),
5=>array('id'=>'5','name'=>'广州','pid'=>'0'),
6=>array('id'=>'6','name'=>'三里屯','pid'=>'4'),
7=>array('id'=>'7','name'=>'广东','pid'=>'5'),
8=>array('id'=>'8','name'=>'三里','pid'=>'4'),
10=>array('id'=>'10','name'=>'小胡同','pid'=>'8')
);

2.实现方法
public function getTrees($arr,$pid,$step = 0){
global $tree;
foreach($arr as $val) {
if($val['pid'] == $pid) {
$flag = str_repeat('&nbsp;&nbsp;&nbsp;',$step);
$val['cate_name'] = $flag.$val['cate_name'];
$tree[] = $val;
$this->getTrees($arr , $val['cate_id'] ,$step+1);
}
}
return $tree;
}
其中$flag参数可以根据自己喜好设计

3.调用方法
$newarr = $this->getTreegs($arr, 0, 0);

注意:这些都是在thinkphp框架下实现的,调用方法等语法一看便知,如果是自己写原生代码,不在框架内,则自行修改调用方式(去掉$this->function()格式)。



转载于:https://www.cnblogs.com/echome/p/7053865.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值