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 相关文章推荐
一键删除顽固的空文件夹 软件下载
Jan 26 PHP
php jquery 实现新闻标签分类与无刷新分页
Dec 18 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
May 06 PHP
浅析php header 跳转
Jun 17 PHP
php中hashtable实现示例分享
Feb 13 PHP
destoon实现不同会员组公司名称显示不同的颜色的方法
Aug 22 PHP
PHP实现的进度条效果详解
May 03 PHP
PHP读取文件的常见几种方法
Nov 03 PHP
PHP数据的提交与过滤基本操作实例详解
Nov 11 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
Apr 07 PHP
关于php unset对json_encode的影响详解
Nov 14 PHP
php多进程并发编程防止出现僵尸进程的方法分析
Feb 28 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
Php做的端口嗅探器--可以指定网站和端口
2006/10/09 PHP
PHP实现的比较完善的购物车类
2014/12/02 PHP
php自动加载方式集合
2016/04/04 PHP
PHP 自动加载的简单实现(推荐)
2016/08/12 PHP
浅谈laravel 5.6 安装 windows上使用composer的安装过程
2019/10/18 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
JQuery实现简单的图片滑动切换特效
2015/11/22 Javascript
Javascript 字符串模板的简单实现
2016/02/13 Javascript
Vuejs第十二篇之动态组件全面解析
2016/09/09 Javascript
深入学习js瀑布流布局
2016/10/14 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
2016/12/27 Javascript
基于匀速运动的实例讲解(侧边栏,淡入淡出)
2017/10/17 Javascript
Angular弹出模态框的两种方式
2017/10/19 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python函数返回多个值的示例方法
2013/12/04 Python
Python单元测试实例详解
2018/05/25 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
2019/08/22 Python
pytorch实现对输入超过三通道的数据进行训练
2020/01/15 Python
python操作ini类型配置文件的实例教程
2020/10/30 Python
ProBikeKit英国:在线公路自行车之家
2017/02/10 全球购物
比利时香水网上商店:NOTINO
2018/03/28 全球购物
梅西百货官网:Macy’s
2020/08/04 全球购物
城市规划毕业生求职信
2013/10/10 职场文书
护理专业毕业生推荐信
2013/10/31 职场文书
销售人员获奖感言
2014/02/05 职场文书
小学课外活动总结
2014/07/09 职场文书
家庭教育的心得体会
2014/09/01 职场文书
简单的个人租房协议书范本
2014/11/26 职场文书
历史名人教你十五个读书方法,赶快Get起来!
2019/07/18 职场文书
python实现Thrift服务端的方法
2021/04/20 Python
MySQL中优化SQL语句的方法(show status、explain分析服务器状态信息)
2022/04/09 MySQL
iOS 16进一步确认,一共支持16款iPhone
2022/04/28 数码科技