利用php递归实现无限分类 格式化数组的详解
发布时间:2020-12-13 06:21:24 所属栏目:PHP教程 来源:网络整理
导读:我们要做一个商品的无限分类 FONT style="COLOR: #ff0000"首先数据库字段为: id ----------商品主键id fid ---------- 商品父id name ---------- 商品名 最后输出的数组格式为 div class="codetitle" a style="CURSOR: pointer" data="33941" class="copybu
我们要做一个商品的无限分类 <FONT style="COLOR: #ff0000">首先数据库字段为:id ----------商品主键idfid ---------- 商品父id name ---------- 商品名 最后输出的数组格式为<div class="codetitle"><a style="CURSOR: pointer" data="33941" class="copybut" id="copybut33941" onclick="doCopy('code33941')"> 代码如下:<div class="codebody" id="code33941"><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, 'name'=>'笔记本' 'child'=>NUll ) ) ), 1=>array(),//格式同上我就不再重复写了 没什么意义 2=>array() ) php代码: <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 ' '; 函数首先查询出所有fid为0的类 通过while逐个循环进行回调查找fid为当前类的id的子类 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |