php无限分类算法,php递归算法 php递归函数无限级分类

运用php递归算法实现的无限极分类:

数据库中,分类表(category)只有一张,里面主要包含字段有:主键ID,分类名name,父级PID,分类路径PATH,这四个字段应该是必须的,再插入一些测试数据,例如表中有如下数据:

a_26747

首先,path字段,可能有些朋友对这个字段还不太理解,0-1-3其实这个表示是当前分类的所有父类,这样一目了然它的父类是开发语言->php->php函数->然后是当前分类,这样做就能很清楚的知道当前分类的深度,是第几级分类,然后可以根据这个字段值计算分类的缩进,并构造出树形菜单如下:

开发语言

|-  php

|-  |-  php函数

|-  |-  |-函数urlencode

|-  java

|-  |-  spring

用php写递归函数实现这个Tree菜单,为了方便直接使用thinkphp来演示查询吧。

复制代码 代码示例:

<

/**

* 作用:查询所有分类生成Tree菜单

* @param int $pid 父ID 默认从顶级开始查询

*/

function toTree($pid=0){

//查询所有顶级分类

//数据库连接在此就不多说了

$model=M('Category');实例化模型

//查询map条件

$map=array(

'pid'=>$pid,

);

//查询

$data=$model->where($map)->select();

//定义新数组 用来存生成的html树形菜单

$html_array=array();

//循环分类

$html='';

$padding=0;   //缩进

foreach($data as $k=>$v){

//根据path字段的值实现缩进

$path=$v['path'];

if($path&&strpos($v['path'],'-')){

$path_array=@explode('-',$v['path']);

$count=count($path_array)-1;

$padding=$count*20; //下一级分类缩进20像素

}

//当前分类数据html

$data_array[]='

'.$v['name'].'

';

//递归开始查找下级分类

$data_array[]=toTree($v['id']);//把当前分类的id当做父级Id进行递归

}

//foreach循环结束合并分类html数组

$html.=implode('',$data_array());

$html.='';

//html树形菜单构造完成,就这么简单,so easy吧!

return $html;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值