利用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 相关文章推荐
Phpbean路由转发的php代码
Jan 10 PHP
PHP 七大优势分析
Jun 23 PHP
PHP的cURL库功能简介 抓取网页、POST数据及其他
Apr 07 PHP
PHP中的函数-- foreach()的用法详解
Jun 24 PHP
ThinkPHP模板比较标签用法详解
Jun 30 PHP
php获取textarea的值并处理回车换行的方法
Oct 20 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
Nov 19 PHP
php实现RSA加密类实例
Mar 26 PHP
YiiFramework入门知识点总结(图文教程)
Dec 28 PHP
ThinkPHP3.2.3实现分页的方法详解
Jun 03 PHP
php7基于递归实现删除空文件夹的方法示例
Jun 15 PHP
PHP实现抽奖功能实例代码
Jun 30 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
2007/03/29 PHP
PHP中实现汉字转区位码应用源码实例解析
2010/06/14 PHP
php setcookie(name, value, expires, path, domain, secure) 参数详解
2013/06/28 PHP
PHP屏蔽过滤指定关键字的方法
2014/11/03 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
表单的一些基本用法与技巧
2006/07/15 Javascript
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
2010/07/11 Javascript
js获取元素在浏览器中的绝对位置
2010/07/24 Javascript
详谈JavaScript的闭包及应用
2017/01/17 Javascript
JS文件中加载jquery.js的实例代码
2018/05/05 jQuery
vuejs选中当前样式active的实例
2018/08/22 Javascript
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
Element-UI中Upload上传文件前端缓存处理示例
2019/02/21 Javascript
Vue动态组件和异步组件原理详解
2019/05/06 Javascript
如何基于jQuery实现五角星评分
2020/09/02 jQuery
[01:01:24]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第三局
2016/02/25 DOTA
[48:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第二场 1月29日
2021/03/11 DOTA
Python时间模块datetime、time、calendar的使用方法
2016/01/13 Python
Python中xrange与yield的用法实例分析
2017/12/26 Python
Python切片索引用法示例
2018/05/15 Python
python如何实现读取并显示图片(不需要图形界面)
2020/07/08 Python
使用CSS实现阅读进度条
2017/02/27 HTML / CSS
CSS3制作日历实现代码
2012/01/21 HTML / CSS
html5中去掉input type date默认样式的方法
2018/09/06 HTML / CSS
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
汽车销售顾问求职自荐信
2014/01/01 职场文书
适用于所有创业者的创业计划书
2014/02/05 职场文书
党员公开承诺事项
2014/03/25 职场文书
影子教师研修方案
2014/06/14 职场文书
追讨欠款律师函
2015/05/27 职场文书
培训学校2015年度工作总结
2015/07/20 职场文书
婚礼领导致辞大全
2015/07/28 职场文书
施工现场安全管理制度
2015/08/05 职场文书
简单聊一聊SQL注入及防止SQL注入
2022/03/23 MySQL