php无限极分类实现方法分析


Posted in PHP onJuly 04, 2019

本文实例讲述了php无限极分类实现方法。分享给大家供大家参考,具体如下:

今天给大家带来的是php的无限极分类技术,本人把无限极分类划分为两种。

首先我把数据库表给大家看看,数据库是tasks,数据库表也是tasks

php无限极分类实现方法分析

第一种方法(数组法)

这种方法其实是先把所有的数据查询出来,重点在于生成的二维数组

<?php
  //分类方法
  function make_list($parent,$deep = 0){
    global $tasks;//申明全局变量
    global $strArr;//申明全局变量
    $qianzhui = str_repeat(" ",$deep)."|--";
    foreach ($parent as $key => $value) {
      $strArr[] = $qianzhui.$value;
      if(isset($tasks[$key])){
        make_list($tasks[$key],++$deep);//递归调用函数
      }
    }
  }
  //数据库连接
  $dbc = mysqli_connect("localhost","root","1234","tasks");
  //拼接sql语句
  $q = "select task_id,parent_id,task from tasks where date_completed = '0000-00-00:00:00:00' order by parent_id,date_added asc";
  //执行sql
  $r = mysqli_query($dbc,$q);
  //遍历结果集
  while (list($task_id,$parent_id,$task) = mysqli_fetch_array($r,MYSQLI_NUM)) {
    //组成数组(一级键为parent_id,二级键为task_id,值为任务内容)
    $tasks[$parent_id][$task_id] = $task;
  }
  //打印数组
  echo "<pre>";
  print_r($tasks);
  echo "</pre>";
  make_list($tasks[0]);
  echo "<pre>";
  //打印缩进数组
  print_r($strArr);
  echo "</pre>";
?>

php无限极分类实现方法分析

运行结果图

第二种方法(查表法)

这种方法其实是在一开始只查询出parent_id=0的所有任务,然后采用递归的方式,动态生成查询条件,然后把每条记录的task_id又作为task_id,这样又进行新一轮的查询,知道查询结果为空。

<?php
  function findArr($where = "parent_id = 0",$deep = 0){
    $dbc = mysqli_connect("localhost","root","1234","tasks");
    global $strArr;
    $q = "select task_id,parent_id,task from tasks where ".$where." order by parent_id,date_added asc";
    $r = mysqli_query($dbc,$q);
    $qianzhui = str_repeat(" ", $deep)."|--";
    while (list($task_id,$parent_id,$task) = mysqli_fetch_array($r,MYSQLI_NUM)) {
      $strArr[] = $qianzhui.$task;
      //拼接查询条件
      $where = "parent_id = ".$task_id;
      //递归查询
      findArr($where,++$deep);
    }
  }
  findArr();
  //打印缩进数组
  echo "<pre>";
  print_r($strArr);
  echo "</pre>";
?>

php无限极分类实现方法分析

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php中文本数据翻页(留言本翻页)
Oct 09 PHP
PHP+MySQL 手工注入语句大全 推荐
Oct 30 PHP
Zend framework处理一个http请求的流程分析
Feb 08 PHP
利用php实现禁用IE和火狐的缓存问题
Dec 03 PHP
php 备份数据库代码(生成word,excel,json,xml,sql)
Jun 23 PHP
php操作mysql数据库的基本类代码
Feb 25 PHP
PHP6 中可能会出现的新特性预览
Apr 04 PHP
php判断电脑访问、手机访问的例子
May 10 PHP
PHP计算百度地图两个GPS坐标之间距离的方法
Jan 09 PHP
深入理解PHP之源码目录结构与功能说明
Jun 01 PHP
PHP实现动态删除XML数据的方法示例
Mar 30 PHP
PHP日期和时间函数的使用示例详解
Aug 06 PHP
php常用日期时间函数实例小结
Jul 04 #PHP
JS操作XML中DTD介绍及使用方法分析
Jul 04 #PHP
PHP操作XML中XPath的应用示例
Jul 04 #PHP
PHP实现财务审核通过后返现金额到客户的功能
Jul 04 #PHP
PHP使用DOM对XML解析处理操作示例
Jul 04 #PHP
PHP创建XML接口示例
Jul 04 #PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
Jul 03 #PHP
You might like
咖啡豆的最常见发酵处理方法,详细了解一下
2021/03/03 冲泡冲煮
DISCUZ 分页代码
2007/01/02 PHP
实用函数5
2007/11/08 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
thinkphp项目如何自定义微信分享描述内容
2017/02/20 PHP
Javascript中的apply()方法浅析
2015/03/15 Javascript
使用jQuery实现图片遮罩半透明坠落遮挡
2015/03/16 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
2016/08/03 Javascript
AngularJs  E2E Testing 详解
2016/09/02 Javascript
angularjs中回车键触发某一事件的方法
2017/04/24 Javascript
JS实现留言板功能
2017/06/17 Javascript
Webpack优化配置缩小文件搜索范围
2017/12/25 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
nodejs高大上的部署方式(PM2)
2018/09/11 NodeJs
Vue监听事件实现计数点击依次增加的方法
2018/09/26 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
浅谈vue中使用编辑器vue-quill-editor踩过的坑
2020/08/03 Javascript
[01:04:22]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 IG vs EG
2018/04/01 DOTA
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
Python 类的特殊成员解析
2018/06/20 Python
python实现屏保计时器的示例代码
2018/08/08 Python
使用Python获取网段IP个数以及地址清单的方法
2018/11/01 Python
如何用Python绘制3D柱形图
2020/09/16 Python
canvas如何实现多张图片编辑的图片编辑器
2020/03/10 HTML / CSS
法学专业自我鉴定
2014/02/05 职场文书
小学安全教育材料
2014/02/17 职场文书
新年抽奖获奖感言
2014/03/02 职场文书
毕业生代领毕业材料的授权委托书
2014/09/29 职场文书
法定代表人证明书
2014/11/28 职场文书
军训结束新闻稿
2015/07/17 职场文书
田径运动会广播稿
2015/08/19 职场文书
2016年5月份红领巾广播稿
2015/12/21 职场文书
六五普法心得体会2016
2016/01/21 职场文书
Python面向对象之内置函数相关知识总结
2021/06/24 Python
Java详细解析==和equals的区别
2022/04/07 Java/Android
python数字图像处理数据类型及颜色空间转换
2022/06/28 Python