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

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

首先,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;

}

php无限分类算法,php递归算法 php递归函数无限级分类相关推荐

  1. python分类算法_用Python实现KNN分类算法

    本文实例为大家分享了Python KNN分类算法的具体代码,供大家参考,具体内容如下 KNN分类算法应该算得上是机器学习中最简单的分类算法了,所谓KNN即为K-NearestNeighbor(K个最邻 ...

  2. python分类算法报告_Python机器学习(1)——决策树分类算法

    1.决策树算法 决策树用树形结构对样本的属性进行分类,是最直观的分类算法,而且也可以用于回归.不过对于一些特殊的逻辑分类会有困难.典型的如异或(XOR)逻辑,决策树并不擅长解决此类问题. 决策树的构建 ...

  3. 利用python语言实现分类算法_使用python实现kNN分类算法

    k-近邻算法是基本的机器学习算法,算法的原理非常简单: 输入样本数据后,计算输入样本和参考样本之间的距离,找出离输入样本距离最近的k个样本,找出这k个样本中出现频率最高的类标签作为输入样本的类标签,很 ...

  4. php无极分类非递归_PHP中的无限级分类、无限嵌套评论

    php中文网最新课程 每日17点准时技术干货分享 一般来说,递归被称为函数自身的调用. 递归在开发中的实际运用 N级分类 无限级的分类在平常的开发中是常见的需求,并且在不少面试题中都会碰到.不管你做什 ...

  5. python 多分类算法_深入理解GBDT多分类算法

    我的个人微信公众号:Microstrong 微信公众号ID:MicrostrongAI 微信公众号介绍:Microstrong(小强)同学主要研究机器学习.深度学习.计算机视觉.智能对话系统相关内容, ...

  6. php无限分级快速,PHPTree——php快速生成无限级分类_php技巧

    在开发中经常需要用到树形数据,比如无限多级分类,就是典型的树形结构.这里面的算法,用到了递归思想,为了简化开发过程,我编写了一个工具来提升开发效率,需要的朋友可以参考下 它就是PHPTree. git ...

  7. Mahout分类算法学习之实现Naive Bayes分类示例

    1.简介 (1) 贝叶斯分类器的分类原理发源于古典概率理论,是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类.朴素贝叶斯分类 ...

  8. 粗糙集分类算法c语言实现,基于粗糙集分类算法的研究及应用

    摘要: 粗糙集理论是1982年由波兰著名的科学家Z.Pawlak提出来的.它是一种能够有效的处理不精确,不确定性数据的数学工具,并且它还具有不需要任何的先验知识,只依赖于数据集本身等优点.粗糙集理论已 ...

  9. 决策树分类算法matlab,matlab实现的C45分类决策树算法

    <matlab实现的C45分类决策树算法>由会员分享,可在线阅读,更多相关<matlab实现的C45分类决策树算法(6页珍藏版)>请在人人文库网上搜索. 1.functionD ...

  10. 算法工程师面试问答_文本分类

    [关于 文本分类]那些你不知道的事 一. 抽象命题 1.1 分类任务有哪些类别?它们都有什么特征? 分类任务是机器学习中最常见的监督学习任务之一.以文本分类为例,情感分类,新闻分类,主题分类.问答匹配 ...

最新文章

  1. HDLBits 系列(35)Lemmings Game
  2. PyTorch深度学习实践06
  3. vb仿excel控件_如何通过INTOUCH组态软件做EXCEL报表(含代码)
  4. ZFS 常见问题解答 及 ZFS Boot 问题探讨
  5. 2.Java内存回收机制
  6. Python生成随机数的方法
  7. 和情商高的人聊天是什么样的体验?
  8. 专家:苹果有能力打造Mac芯片但不会去做
  9. Parallels Desktop如何检查Windows系统是否具有EFI/UEFI或 Legacy BIOS固件接口
  10. python相机标定
  11. PHP将swf转为gif,swf怎么转换成gif 怎么把swf转换成gif
  12. C# 软件开发岗面试经验总结
  13. cesium-相机系统
  14. html当当书网站 html网上在线书城 html在线小说书籍网页 当当书城网页设计
  15. win10怎么共享打印机_win10怎么连接局域网打印机
  16. pathon字符串复习
  17. Vue中如果关闭语法检查
  18. 鸿蒙升级后桌面背景底纹怎么弄,ps添加背景怎么弄
  19. 【Vue3】李南江老师讲解--个人笔记(二)ref 和 reactive详解
  20. ⑮霍兰德EA*型如何选专业?高考志愿填报选专业

热门文章

  1. arm服务器虚拟化云手机,arm虚拟化部署的云手机有哪些优缺点
  2. cad中计算机的快捷键,CAD中一些常用的快捷键用法
  3. fudanNLP keyword Extraction
  4. 玩转ansys——悬臂梁质量块的实体建模与仿真
  5. AtCoder - ABC 160 - DE(贪心)
  6. 单机版fifa11显示ea服务器,游戏新消息:EA服务器出问题所有EA游戏在线功能无法正常运行...
  7. git切换到旧版本_git如何更新到指定版本,然后再更新到最新版本
  8. 八数码java_八数码问题-A*算法-Java实现
  9. kali安装python3.8_kali2019.4试用记录
  10. 南京师范大学地图学与地理信息系统专业《地理信息系统原理》研究生(硕士)期末试卷