利用php递归实现无限分类 格式化数组的详解


Posted in PHP onJune 08, 2013

我们要做一个商品的无限分类
首先数据库字段为:
id ----------商品主键id
fid ---------- 商品父id
name ---------- 商品名
最后输出的数组格式为

<PRE class=php name="code"><PRE class=php name="code">array(
 0=>array(
  'id'=>1,
  'fid'=>0,
  'name'=>'法国货'
  'child'=>array(
   0=>array( 
    'id'=>12,
    'fid'=>1,
    'name'=>'香水'
    'child'=>array(
     0=>array(
      'id'=>34,
      'fid'=>12,
      'name'=>'女用香水'
     )
    )
   ),
   1=>array(
    'id'=>13,
    'fid'=>1,
    'name'=>'笔记本'
    'child'=>NUll
   )
  )
 ),
 1=>array(),    //格式同上我就不再重复写了 没什么意义
 2=>array()
)</PRE><BR>
<PRE></PRE>
<PRE></PRE>
php代码:
<P></P>
<P></P>
<PRE class=php name="code"><?php
//数据库我用的mysql PDO  但是整个思路又是一样的
$conn=mysql_connect('localhost','root','123');
if(mysql_errno()){
 printf('连接失败'.mysql_error());
}
mysql_select_db('edeng');
mysql_set_charset('utf8');
/*
 *递归函数
 *@param id 要查询fid=$id的所有子类  这里将$id的默认值为设为0  是因为我在数据库中将最顶层的类别的fid设置为0
 */
function get_array($id=0){
 $sql="select id,fid,cname from e_cat where fid= $id";
 $result=mysql_query($sql);
 $arr=array();
 if($result && mysql_affected_rows()){
  while($rows=mysql_fetch_assoc($result)){   $rows['child']=get_array($rows['id']);
   $arr[] = $rows;
  }
  return $arr;
 }
} 
echo '<pre>';
$result = get_array();
print_r($result);
</PRE><BR>
<BR>
<P></P>
<P> </P>
<P>函数首先查询出所有fid为0的类</P>
<P>通过while逐个循环进行回调查找fid为当前类的id的子类</P>
<P><BR>
</P>
<P><BR>
</P>
<BR>
<BR>
<PRE></PRE>
</PRE>

PHP 相关文章推荐
一个简单的自动发送邮件系统(三)
Oct 09 PHP
PHP 数据库树的遍历方法
Feb 06 PHP
PHP header()函数使用详细(301、404等错误设置)
Apr 17 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
May 29 PHP
PHP中构造函数和析构函数解析
Oct 10 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
Mar 29 PHP
thinkPHP中配置的读取与C方法详解
Dec 05 PHP
Yii2实现多域名跨域同步登录退出
Feb 04 PHP
php base64 编码与解码实例代码
Mar 21 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
Mar 15 PHP
windows环境下使用Composer安装ThinkPHP5
May 18 PHP
php+mysql实现的无限分类方法类定义与使用示例
May 27 PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
Jun 08 #PHP
php引用返回与取消引用的详解
Jun 08 #PHP
PHP stripos()函数及注意事项的分析
Jun 08 #PHP
php自动加载机制的深入分析
Jun 08 #PHP
深入理解curl类,可用于模拟get,post和curl下载
Jun 08 #PHP
coreseek 搜索英文的问题详解
Jun 08 #PHP
探讨如何在php168_cms中提取验证码
Jun 08 #PHP
You might like
php 过滤器实现代码
2010/08/09 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
2014/05/10 PHP
php array_merge函数使用需要注意的一个问题
2015/03/30 PHP
Symfony学习十分钟入门经典教程
2016/02/03 PHP
apache php mysql开发环境安装教程
2016/07/28 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
接收键盘指令的脚本
2006/06/26 Javascript
js以对象为索引的关联数组
2010/07/04 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
轻松创建nodejs服务器(5):事件处理程序
2014/12/18 NodeJs
jQuery实现调整表格单列顺序完整实例
2016/06/20 Javascript
JS中parseInt()和map()用法分析
2016/12/16 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
Vue将页面导出为图片或者PDF
2020/08/17 Javascript
关于layui表单中按钮自动提交的解决方法
2019/09/09 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
JavaScript this关键字指向常用情况解析
2020/09/02 Javascript
react的hooks的用法详解
2020/10/12 Javascript
Vue2.0 ES6语法降级ES5的操作
2020/10/30 Javascript
JS addEventListener()和attachEvent()方法实现注册事件
2021/01/11 Javascript
python实现翻转棋游戏(othello)
2019/07/29 Python
python中get和post有什么区别
2020/06/19 Python
python 无损批量压缩图片(支持保留图片信息)的示例
2020/09/22 Python
HTML5 textarea高度自适应的两种方案
2020/04/08 HTML / CSS
iRobot官网:改变生活的家用机器人品牌
2016/09/20 全球购物
STUBHUB日本:购买和出售全球活动门票
2018/07/01 全球购物
在Java开发中如何选择使用哪种集合类
2016/08/09 面试题
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
2012/05/30 面试题
环境科学专业优秀毕业生自荐书
2014/02/03 职场文书
给老师的检讨书
2014/02/11 职场文书
初一学生期末评语
2014/04/24 职场文书
艺术设计专业毕业生推荐信
2014/07/08 职场文书
支部书记四风对照材料
2014/08/28 职场文书
文明单位申报材料
2014/12/23 职场文书
团员年度个人总结
2015/02/26 职场文书
超级礼物观后感
2015/06/15 职场文书