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 相关文章推荐
jQuery 源码分析笔记
May 25 PHP
php中计算未知长度的字符串哪个字符出现的次数最多的代码
Aug 14 PHP
apache php模块整合操作指南
Nov 16 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
Jul 18 PHP
yii上传文件或图片实例
Apr 01 PHP
php去除字符串中空字符的常用方法小结
Mar 17 PHP
PHP和C#可共用的可逆加密算法详解
Oct 26 PHP
使用PHP如何实现高效安全的ftp服务器(二)
Dec 30 PHP
Yii核心验证器api详解
Nov 23 PHP
PHP微商城开源代码实例
Mar 27 PHP
RSA实现JS前端加密与PHP后端解密功能示例
Aug 05 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
Feb 11 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
模仿OSO的论坛(四)
2006/10/09 PHP
一步一步学习PHP(7) php 字符串相关应用
2010/03/05 PHP
PHP 中文处理技巧
2010/04/25 PHP
PHP框架Laravel学习心得体会
2015/10/28 PHP
PHP常见错误提示含义解释(实用!值得收藏)
2016/04/25 PHP
PHP编程 SSO详细介绍及简单实例
2017/01/13 PHP
当jQuery1.7遇上focus方法的问题
2014/01/26 Javascript
自己动手手写jQuery插件总结
2015/01/20 Javascript
JS通过Cookie判断页面是否为首次打开
2016/02/05 Javascript
用原生JS对AJAX做简单封装的实例代码
2016/07/13 Javascript
微信小程序 简单教程实例详解
2017/01/13 Javascript
分享5个顶级的JavaScript Ajax组件库
2018/09/16 Javascript
angularjs http与后台交互的实现示例
2018/12/21 Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
2019/12/04 Javascript
基于vue实现微博三方登录流程解析
2020/11/04 Javascript
JavaScript Dom实现轮播图原理和实例
2021/02/19 Javascript
python中sets模块的用法实例
2014/09/30 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
2018/03/29 Python
将python代码和注释分离的方法
2018/04/21 Python
使用CodeMirror实现Python3在线编辑器的示例代码
2019/01/14 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
2019/05/27 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
2019/06/27 Python
在python中利用numpy求解多项式以及多项式拟合的方法
2019/07/03 Python
Python基于callable函数检测对象是否可被调用
2020/10/16 Python
各大浏览器 CSS3 和 HTML5 兼容速查表 图文
2010/04/01 HTML / CSS
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
2016/03/22 HTML / CSS
机电专业体育教师求职信
2013/09/21 职场文书
网站编辑求职信
2013/10/17 职场文书
初中英语教学反思
2014/01/25 职场文书
学生宿舍管理制度
2014/01/30 职场文书
档案工作汇报材料
2014/08/21 职场文书
关于读书的演讲稿300字
2014/08/27 职场文书
作风大整顿心得体会
2014/09/10 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
花田少年史观后感
2015/06/16 职场文书
运动会开幕式主持词
2015/07/01 职场文书