php无限分类
无限循环
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'] = " |- ".$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无限分类的更多相关文章
- 后台树状菜单,js实现递归无限分类
//新闻类别管理 public function new_classify() { $arr = M('news_classify')->where("fid = 0")-& ...
- MySql无限分类数据结构--预排序遍历树算法
MySql无限分类数据结构--预排序遍历树算法 无限分类是我们开发中非常常见的应用,像论坛的的版块,CMS的类别,应用的地方特别多. 我们最常见最简单的方法就是在MySql里ID ,parentID, ...
- TreeView递归绑定无限分类数据
TreeView递归绑定无限分类数据 实现一个动态绑定,无限级分类数据时,需要将数据绑定到TreeView控件,分类表的结构是这样的: 字段 类型 Id int ParentId int Name N ...
- 关于无限分类的树状输出(id,name,pid)类型的
首先创建无限分类的数据表,我这里采用的是id.name.pid这种类型(当然还有很多种无限分类的方式了,比如:id.name.pid.path.left.right左右节点的形式) CREATE TA ...
- php递归方法实现无限分类实例
数组: 代码如下 复制代码 $items = array( array('id' => 1, 'pid' => 0, 'name' => '一级11' ), array('id' ...
- PHP+Mysql无限分类的方法汇总
无限分类是个老话题了,来看看PHP结合Mysql如何实现.第一种方法这种方法是很常见.很传统的一种,先看表结构表:categoryid int 主键,自增name varchar 分类名称pid in ...
- PHP全路径无限分类导航LINK代码实现
<?php /** * @param php全路径无限分类 */ include('db.inc.php'); function getPathCate($cateid){ $sql = &qu ...
- PHP全路径无限分类原理
全路径无限分类:以一个字段把他所有的父级id按顺序记录下来以此实现的无限分类叫做全路径无限分类 优点:查询方便 缺点:增加,移动分类时数据维护时稍微复杂.
- PHP无限分类分类导航LINK的代码实现
1. 代码数据库的结构: 2.要达到的效果 /** * @param php无限分类分类导航LINK的代码实现 */ include('db.inc.php'); function getCatePa ...
- php三种无限分类
无限分类,是指从一个最高分类开始,每个子分类都可以分出自己的若干个子分类,可以一直分下去,称为无限级分类: 下面是对省市县的无限极分类的列子.数据库如图: 代码示例如下: /** * @Descrip ...
随机推荐
- Nginx负载均衡配置说明
WEB服务做负载均衡的方法有很多种,但使用Nginx做负载均衡部署毫无疑问是非常高效也是非常流行的一种. 本人大多数做.NET开发,但部署负载却一直用Nginx,对其他的负载方式研究不多,只测试过一次 ...
- 鼠标 mouseover和mouseout事件
在div内想实现鼠标移入移出效果,最开始的时候是用了jquery的mouseout和mouseover事件来实现的, $('.product).mouseover(function(){ …… }). ...
- mybatis 快速入门
1 . 定义 java实体类 User,建立user表 读者请自行完成准备工作. User 类 有 id, name,age 属性 user 表 中 id,name,age字段 id自增长 ...
- RS-232 vs. TTL Serial Communication(转载)
RS-232串口一度像现在的USB接口一样,是PC的标准接口,用来连接打印机.Modem和其他一些外设.后来逐渐被USB接口所取代,现在PC上已经看不到它的身影了.开发调试时如果用到串口,一般都是用U ...
- bzoj-4518 4518: [Sdoi2016]征途(斜率优化dp)
题目链接: 4518: [Sdoi2016]征途 Description Pine开始了从S地到T地的征途. 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站. Pine计划用m天到达T地 ...
- python利用unrar实现rar文件解压缩
python第三方包unrar可以实现rar文件的解压缩,它以动态库UnRAR为基础,封装而成 1. 下载UnRAR动态库 https://pypi.python.org/pypi/unrar/0.2 ...
- JS中的“!!”
var o={flag:true}; var test=!!o.flag;//等效于var test=o.flag||false; alert(test); 由于对null与undefined用! ...
- win7 cmd 操作mysql数据库
一 ,对MySql服务器的开启,重启,关闭等操作 当然,可以在win7的界面环境下,关闭或开启MySql服务.但是经常找不到win7的服务管理器,主要定位方法有二:命令行下输入servic ...
- 积极主动敲代码,使用Junit学习Java程序设计
积极主动敲代码,使用JUnit学习Java 早起看到周筠老师在知乎的回答软件专业成绩很好但是实际能力很差怎么办?,很有感触. 从读大学算起,我敲过不下100本程序设计图书的代码,我的学习经验带来我的程 ...
- 如何设置ASP.NET页面的运行超时时间
全局超时时间 服务器上如果有多个网站,希望统一设置一下超时时间,则需要设置 Machine.config 文件中的 ExecutionTimeout 属性值.Machine.config 文件位于 % ...