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访问查询mysql数据的三种方法
Oct 09 PHP
ThinkPHP Mobile使用方法简明教程
Jun 18 PHP
PHP使用range协议实现输出文件断点续传代码实例
Jul 04 PHP
phpstorm配置Xdebug进行调试PHP教程
Dec 01 PHP
php二维码生成
Oct 19 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
Jun 11 PHP
PHP设计模式之注册树模式分析
Jan 26 PHP
PHP排序二叉树基本功能实现方法示例
May 26 PHP
php实现数组重复数字统计实例
Sep 30 PHP
PHP面向对象程序设计之对象的遍历操作示例
Jun 12 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
Nov 21 PHP
phpstorm最新激活码分享亲测phpstorm2020.2.3版可用
Nov 22 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的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
2016/12/14 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
2017/07/03 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
JS版网站风格切换实例代码
2008/10/06 Javascript
js multiple全选与取消全选实现代码
2012/12/04 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
JQuery中$.ajax()方法参数详解及应用
2013/12/12 Javascript
extJS中常用的4种Ajax异步提交方式
2014/03/07 Javascript
JavaScript定时器制作弹窗小广告
2017/02/05 Javascript
JavaScript中 ES6变量的结构赋值
2018/07/10 Javascript
JS实现的合并两个有序链表算法示例
2019/02/25 Javascript
JavaScript数组排序功能简单实现
2020/05/14 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
[01:00:30]TFT vs VGJ.T Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
约瑟夫问题的Python和C++求解方法
2015/08/20 Python
python3实现暴力穷举博客园密码
2016/06/19 Python
PyQt4实现下拉菜单可供选择并打印出来
2018/04/20 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
2018/11/14 Python
在Python文件中指定Python解释器的方法
2019/02/18 Python
python3 实现的对象与json相互转换操作示例
2019/08/17 Python
英国领先的杂志订阅网站:Magazine.co.uk
2018/01/25 全球购物
亚洲最大的眼镜批发商和零售商之一:Glasseslit
2018/10/08 全球购物
项目专员岗位职责
2013/12/04 职场文书
总裁秘书岗位职责
2013/12/04 职场文书
档案信息化建设方案
2014/05/16 职场文书
销售顾问工作计划书
2014/09/15 职场文书
2014年教育实习工作总结
2014/11/22 职场文书
社区文明倡议书
2015/04/28 职场文书
2015年小学教导处工作总结
2015/05/26 职场文书
六年级作文之自救
2019/12/19 职场文书
Go遍历struct,map,slice的实现
2021/06/13 Golang
springboot如何接收application/x-www-form-urlencoded类型的请求
2021/11/02 Java/Android
Python requests用法和django后台处理详解
2022/03/19 Python