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 相关文章推荐
让你同时上传 1000 个文件 (二)
Oct 09 PHP
Phpbean路由转发的php代码
Jan 10 PHP
php中CI操作多个数据库的代码
Jul 05 PHP
php中将字符串转为HTML的实体引用的一个类
Feb 03 PHP
PHP ignore_user_abort函数详细介绍和使用实例
Jul 15 PHP
ThinkPHP在新浪SAE平台的部署实例
Oct 31 PHP
php站内搜索关键词变亮的实现方法
Dec 30 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
Apr 11 PHP
ThinkPHP 3.2.2实现事务操作的方法
May 05 PHP
PHP中TP5 上传文件的实例详解
Jul 31 PHP
PHP设计模式之模板方法模式定义与用法详解
Apr 02 PHP
php使用redis的有序集合zset实现延迟队列应用示例
Feb 20 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的dl函数用法实例
2014/11/06 PHP
PHP人民币金额转大写实例代码
2015/10/02 PHP
php生成4位数字验证码的实现代码
2015/11/23 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
解放web程序员的输入验证
2006/10/06 Javascript
Javascript结合css实现网页换肤功能
2009/11/02 Javascript
jquery 注意事项与常用语法小结
2010/06/07 Javascript
jQuery结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
2011/02/18 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
2013/05/07 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
浅析Cookie中的Path与domain
2013/12/18 Javascript
轻松实现javascript图片轮播特效
2016/01/13 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
2016/06/14 Javascript
jQuery选择器总结之常用元素查找方法
2016/08/04 Javascript
a标签跳转到指定div,jquery添加和移除class属性的实现方法
2016/10/10 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
Node.js中用D3.js的方法示例
2017/01/16 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
2017/08/20 Javascript
[16:56]教你分分钟做大人:司夜刺客
2014/10/30 DOTA
python三元运算符实现方法
2013/12/17 Python
整理Python 常用string函数(收藏)
2016/05/30 Python
Python聊天室程序(基础版)
2018/04/01 Python
Python处理CSV与List的转换方法
2018/04/19 Python
如何在python中判断变量的类型
2020/07/29 Python
软件缺陷的分类都有哪些
2014/08/22 面试题
五年级英语教学反思
2014/01/31 职场文书
2014年幼儿园植树节活动方案
2014/03/02 职场文书
开学典礼决心书
2014/03/11 职场文书
2014年五一活动策划方案
2014/03/15 职场文书
劳动竞赛口号
2014/06/16 职场文书
十佳少年事迹材料
2014/12/25 职场文书
2015年检验员工作总结范文
2015/04/30 职场文书
2015年审计人员工作总结
2015/05/26 职场文书
文艺节目主持词
2015/07/06 职场文书
企业年会祝酒词
2015/08/11 职场文书