无限循环

1.需要套2个foreach

2.2个foreach结构一样

纯代码获取数据

public function CycleData($parent_id=){
$where['parent_id']= $parent_id;
$res = $this->m->where($where)->field('id,name')->select();
foreach($res as $k=>$v){
$result[$v['id']]['id'] = $v['id'];
$result[$v['id']]['name'] = $v['name']; $r = $this->GametypeOpt($v['id']);
foreach($r as $kk=>$vv){
$result[$vv['id']]['id'] = $vv['id'];
$result[$vv['id']]['name'] = "-|  ".$vv['name'];
} }
return $result; }

案例

// 无限循环数据
public function CycleData($parent_id=){
$where['parent_id']= $parent_id;
$res = $this->m->where($where)->field('id,name')->select();
foreach($res as $k=>$v){
$result[$v['id']]['id'] = $v['id'];
$result[$v['id']]['name'] = $v['name'];
//$opt[$v['id']] .= "<option value='".$v['id']."'>".$v['name']."</option>"; $r = $this->CycleData($v['id']);
foreach($r as $kk=>$vv){
$result[$vv['id']]['id'] = $vv['id'];
$result[$vv['id']]['name'] = "&nbsp;&nbsp;&nbsp;&nbsp;|-&nbsp;&nbsp;".$vv['name'];
//$opt[$vv['id']] .= "<option value='".$vv['id']."'>".$vv['name']."</option>";
} }
return $result; }
// 无限循环opt
public function GametypeOpt($parent_id=,$val){
$list = $this->CycleData($parent_id);
$opt .= "<option value='0'>顶级分类</option>";
foreach($list as $k=>$v){
if($v['id'] = $val){
$opt .= "<option value='".$v['id']."' selected='selected'>".$v['name']."</option>";
}else{
$opt .= "<option value='".$v['id']."'>".$v['name']."</option>";
} }
return $opt;
}

完美代码

public function CycleData($parent_id=){
$res = $this->Catedata($parent_id);
if(empty($res)) return false;
foreach($res as $k=>$v){
$result[$v['id']]['id'] = $v['id'];
$result[$v['id']]['name'] = $v['name'];
$result[$v['id']]['parent_id'] = $v['parent_id']; $rf = $this->CycleData($v['id']);
if($rf){
foreach($rf as $k=>$vv){
$result[$vv['id']]['id'] = $vv['id'];
$result[$vv['id']]['name'] = " |- ".$vv['name'];
$result[$vv['id']]['parent_id'] = $vv['parent_id'];
}
}
}
return $result;
}

显示数组格式

array(
'' => array(
'id' => '',
'parent_id' => '',
'name' =>'顶级分类一'
),
'' => array(
'id' => '',
'parent_id' => '',
'name' =>' |- 二级分类一'
),
'' => array(
'id' => '',
'parent_id' => '',
'name' =>' |- |- 三级分类一'
),
'' => array(
'id' => '',
'parent_id' => '',
'name' =>'顶级分类一'
),
'' => array(
'id' => '',
'parent_id' => '',
'name' =>' |- 三级分类一'
), );

格式

Array
(
[] => Array
(
[id] =>
[name] =>
[child] => Array
(
[] => Array
(
[id] =>
[name] =>
[child] => Array
(
[] => Array
(
[id] =>
[name] =>
[child] =>
) ) ) ) ) [] => Array
(
[id] =>
[name] =>
[child] => Array
(
[] => Array
(
[id] =>
[name] =>
[child] =>
) ) ) )

php代码

public function CycleData($parent_id=){
$where['parent_id']= $parent_id;
$res = db('category')->where($where)->select(); if(empty($res)) return false; foreach($res as $k=>$v){
$result[$v['id']]['id'] = $v['id'];
$result[$v['id']]['name'] = $v['name'];
$result[$v['id']]['child'] = $this->CycleData($v['id']); }
return $result;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. PHP全路径无限分类原理

    全路径无限分类:以一个字段把他所有的父级id按顺序记录下来以此实现的无限分类叫做全路径无限分类 优点:查询方便 缺点:增加,移动分类时数据维护时稍微复杂.

  9. PHP无限分类分类导航LINK的代码实现

    1. 代码数据库的结构: 2.要达到的效果 /** * @param php无限分类分类导航LINK的代码实现 */ include('db.inc.php'); function getCatePa ...

  10. php三种无限分类

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

随机推荐

  1. mysql 安装问题

    针对免安装版的mysql: 1.启动CMD,在mysql安装目录下  ~\bin\目录下,输入: mysqld -install   安装msyql服务: 2.启动MySQL服务,输入: net st ...

  2. Android 通过 Intent 传递类对象或list对象

    (转:http://www.cnblogs.com/shaocm/archive/2013/01/08/2851248.html) Android中Intent传递类对象提供了两种方式一种是 通过实现 ...

  3. sqlserver如何创建镜像图文教程(转)

    由于工作中需要做SQL的镜像异地备份,以前都没有研究过,百度了一个文章记录下,方便以后查询 转载地址:http://jingyan.baidu.com/article/d5c4b52b20843fda ...

  4. DNS相关知识

    1 DNS解析过程详解 2 DNS原理总结及其解析过程详解 3 DNS原理及其解析过程[精彩剖析] 4 DNS域名解析原理 5 dig挖出DNS的秘密 6 nslookup通往DNS的桥梁 7 DNS ...

  5. (转)CNBLOG离线Blog发布方法

    原文章路径:http://www.cnblogs.com/liuxianan/archive/2013/04/13/3018732.html (新添了插件路径) 去年就知道有这个功能,不过没去深究总结 ...

  6. 如何安装虚拟机VMware

    虚拟机可以帮我们在一台电脑上面来模拟出多台电脑,而且可以装不同的系统.下面就教大家怎么装VMware虚拟机 1.下载Vmware安装包,建议下载VMware10 这个有中文版的,其他版本的都是英文的哦 ...

  7. mysql5.7.13-windows 免安装版配置简介

    1.下载mysql5.7.13-windows版本 (1)mysql5.7.13-win64版本百度云下载链接分享地址:链接:http://pan.baidu.com/s/1slMl4Ah 密码:w6 ...

  8. Neutron 理解 (1): Neutron 所实现的虚拟化网络 [How Netruon Virtualizes Network]

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  9. VS 常用高效 快捷键

    强迫智能感知:Ctrl+J.智能感知是Visual Studio最大的亮点之一,选择Visual Studio恐怕不会没有这个原因. 2 撤销:Ctrl+Z.除非你是天才,那么这个快捷键也是最常用的. ...

  10. 文件上传---普通文件fileupload.jar和url文件httpUrlConnection

    文件上传---普通文件和url文件 主要用来学习使用common-fileupload.jar和java.net.httpURLConnection 普通文件: //上传xls文件到临时目录 if ( ...