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中json_encode、json_decode与serialize、unserialize的性能测试分析
Jun 09 PHP
Apache2中实现多网站域名绑定的实现方法
Jun 01 PHP
php在项目中寻找代码的坏味道(综艺命名)
Jul 19 PHP
PHP获取用户的浏览器与操作系统信息的代码
Sep 04 PHP
解析zend studio中直接导入svn中的项目的方法步骤
Jun 21 PHP
php去除数组中重复数据
Nov 18 PHP
PHP使用in_array函数检查数组中是否存在某个值
Mar 25 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
Apr 21 PHP
php使用array_search函数实现数组查找的方法
Jun 12 PHP
适用于初学者的简易PHP文件上传类
Oct 29 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
Apr 18 PHP
PHP从数组中删除元素的四种方法实例
May 12 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调用Webservice实例代码
2011/07/29 PHP
phpMyAdmin安装并配置允许空密码登录
2015/07/04 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
2018/08/21 PHP
javascript设计模式 封装和信息隐藏(上)
2012/07/24 Javascript
jquery getScript动态加载JS方法改进详解
2012/11/15 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
用jquery实现输入框获取焦点消失文字
2013/04/27 Javascript
捕获浏览器关闭、刷新事件不同情况下的处理方法
2013/06/02 Javascript
将Datatable转化成json发送前台实现思路
2013/09/06 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
2013/11/19 Javascript
javascript对下拉列表框(select)的操作实例讲解
2013/11/29 Javascript
JavaScript使用指针操作实现约瑟夫问题实例
2015/04/07 Javascript
Vue计算属性的使用
2017/08/04 Javascript
深入浅析JS中的严格模式
2018/06/04 Javascript
vue axios数据请求get、post方法及实例详解
2018/09/11 Javascript
[01:36:19]Secret vs NB 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
详解Python的Django框架中的通用视图
2015/05/04 Python
举例讲解Linux系统下Python调用系统Shell的方法
2015/11/07 Python
利用Django内置的认证视图实现用户密码重置功能详解
2017/11/24 Python
Python实现求数列和的方法示例
2018/01/12 Python
Python使用遗传算法解决最大流问题
2018/01/29 Python
python链接oracle数据库以及数据库的增删改查实例
2018/01/30 Python
Python selenium环境搭建实现过程解析
2020/09/08 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
乐天旅游香港网站:日本饭店预订
2017/11/29 全球购物
综合素质的自我鉴定
2013/10/07 职场文书
护理专业毕业生自我鉴定
2013/10/08 职场文书
员工培训邀请函
2014/01/11 职场文书
授权委托书格式模板
2014/04/03 职场文书
环境整治工作方案
2014/05/18 职场文书
助人为乐好少年事迹材料
2014/08/18 职场文书
房地产公司财务总监岗位职责
2015/04/03 职场文书
卢旺达饭店观后感
2015/06/05 职场文书
员工手册董事长致辞
2015/07/29 职场文书
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
2021/05/22 Python