在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()格式)。




免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM