1.读取数据数据

/**
* 所有分类数据
* */
public function categoryData(){
$order = 'id,sort asc';
$res = $this->db->cache($this->cache)->order($order)->select();
return $data;
}

结构如下

Array
(
[] => Array
(
[id] =>
[pid] =>
[name] => 新闻40
[desc] =>
[is_delete] =>
[add_time] =>
) [] => Array
(
[id] =>
[pid] =>
[name] => 图片
[desc] =>
[is_delete] =>
[add_time] =>
) [] => Array
(
[id] =>
[pid] =>
[name] =>
[desc] =>
[is_delete] =>
[add_time] =>
) [] => Array
(
[id] =>
[pid] =>
[name] =>
[desc] =>
[is_delete] =>
[add_time] =>
) [] => Array
(
[id] =>
[pid] =>
[name] => 第4级分类
[desc] =>
[is_delete] =>
[add_time] =>
) [] => Array
(
[id] =>
[pid] =>
[name] =>
[desc] =>
[is_delete] =>
[add_time] =>
) )

2.创建子分类查询

 /**
* 子分类列表
* */
public function pidData($pid=null){
$result ='';
$arr = $this->categoryData();
foreach($arr as $k=>$v){
if($v['pid'] == $pid){
$result[$v['id']] = $v;
}
}
return $result;
}

3.无限循环

 /**
* 分类树
* */
public function tree($pid=){
$res = $this->pidData($pid);
if(empty($res)) return false;
foreach($res as $k=>$v){
$result[$v['id']] = $v; $rf = $this->tree($v['id']);
if($rf){
foreach($rf as $k=>$vv){
$result[$vv['id']]['id'] = $vv['id'];
$result[$vv['id']]['name'] = " |- ".$vv['name'];
$result[$vv['id']]['pid'] = $vv['pid'];
}
}
}
return $result;
}

最后获得的无限循环结构

Array
(
[] => Array
(
[id] =>
[pid] =>
[name] => 新闻40
[desc] =>
[is_delete] =>
[add_time] =>
) [] => Array
(
[id] =>
[name] => |-
[pid] =>
) [] => Array
(
[id] =>
[name] => |- |- 第4级分类
[pid] =>
) [] => Array
(
[id] =>
[name] => |- |- |-
[pid] =>
) [] => Array
(
[id] =>
[name] => |-
[pid] =>
) [] => Array
(
[id] =>
[pid] =>
[name] => 图片
[desc] =>
[is_delete] =>
[add_time] =>
) )

php无限分类二的更多相关文章

  1. php三种无限分类

    无限分类,是指从一个最高分类开始,每个子分类都可以分出自己的若干个子分类,可以一直分下去,称为无限级分类: 下面是对省市县的无限极分类的列子.数据库如图: 代码示例如下: /** * @Descrip ...

  2. thinkphp之无限分类

    namespace Home\Controller; use Home\Controller; class CategoryController extends Controller { //无限分类 ...

  3. 后台树状菜单,js实现递归无限分类

    //新闻类别管理 public function new_classify() { $arr = M('news_classify')->where("fid = 0")-& ...

  4. MySql无限分类数据结构--预排序遍历树算法

    MySql无限分类数据结构--预排序遍历树算法 无限分类是我们开发中非常常见的应用,像论坛的的版块,CMS的类别,应用的地方特别多. 我们最常见最简单的方法就是在MySql里ID ,parentID, ...

  5. TreeView递归绑定无限分类数据

    TreeView递归绑定无限分类数据 实现一个动态绑定,无限级分类数据时,需要将数据绑定到TreeView控件,分类表的结构是这样的: 字段 类型 Id int ParentId int Name N ...

  6. 关于无限分类的树状输出(id,name,pid)类型的

    首先创建无限分类的数据表,我这里采用的是id.name.pid这种类型(当然还有很多种无限分类的方式了,比如:id.name.pid.path.left.right左右节点的形式) CREATE TA ...

  7. php递归方法实现无限分类实例

    数组:  代码如下 复制代码 $items = array( array('id' => 1, 'pid' => 0, 'name' => '一级11' ), array('id' ...

  8. PHP+Mysql无限分类的方法汇总

    无限分类是个老话题了,来看看PHP结合Mysql如何实现.第一种方法这种方法是很常见.很传统的一种,先看表结构表:categoryid int 主键,自增name varchar 分类名称pid in ...

  9. PHP全路径无限分类导航LINK代码实现

    <?php /** * @param php全路径无限分类 */ include('db.inc.php'); function getPathCate($cateid){ $sql = &qu ...

随机推荐

  1. kylin的状态栏(启动器)改成ubuntu之前的样子

    ylin的状态栏(启动器)改成ubuntu之前的样子,ubuntu是在左边的,kylin在底部.占空间. 执行命令 gsettings set com.canonical.Unity.Launcher ...

  2. Redis 密码设置

    如果不加密码,默认只能本机访问,加密码也是为了安全考虑 1.进入Redis 的安装目录,找到redis.conf文件.用vi命令打开文件 输入  / requirepass 进行查找,输入n查找下一个 ...

  3. win7系统损坏无法进入系统(dsark.sys文件损坏)(未测试过)

    原文:http://blog.csdn.net/foreverhuylee/article/details/37913837 电脑今天突然开不了机,出现一下画面 即提示d:\Windows\syste ...

  4. 读取 classes下的配置文件

    调用: Configure.getValue("discount.strategy.class"); 配置类: package com.util; import com.sun.j ...

  5. PCL特征点与配准(1)

    关于输入一个具体的物体的点云,从场景中找出与该物体点云相匹配的,这种方法可以用来抓取指定的物体等等,具体的代码的解释如下,需要用到的一些基础的知识,在之前的博客中都有提及,其中用到的一些方法可以翻阅前 ...

  6. 即时通信(IM)和实时通信(RTC)的区别

    即时通信(IM=nstant messaging)和实时通信(rtc=Real-time communication)都是一套网络通信系统,其本质都是对信息进行转发.其最大的不同点,是对信息传递的时间 ...

  7. Qt封装QTcpServer参考资料--QT自带QTcpServer架构分析

    Qt 4.6自带的threaddedfortuneserver是个简单明了的 Qt  C/S网络编程server端程序的例子, 该例子演示了 QTcpServer与QThread配合的方法. 代码不多 ...

  8. ZARM in Linux & MIUI

    zram是Linux内核的一个模块,之前被称为“compcache”.zram通过在RAM内的压缩快设备上分页,直到必须使用硬盘上的交换空间,以避免在磁盘上进行分页,从而提高性能.由于zram可以用内 ...

  9. [Python学习]Iterator 和 Generator的学习心得

    [Python学习]Iterator 和 Generator的学习心得 Iterator是迭代器的意思,它的作用是一次产生一个数据项,直到没有为止.这样在 for 循环中就可以对它进行循环处理了.那么 ...

  10. 【转】Android开发,按手机上的back键时程序最小化而不退出

    @Override public boolean dispatchKeyEvent(KeyEvent event) { // menuUtils.createTwoDispatcher(event); ...