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 相关文章推荐
我常用的几个类
Oct 09 PHP
php异常处理技术,顶级异常处理器
Jun 13 PHP
如何使用php输出时间格式
Aug 31 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
Nov 12 PHP
推荐几个开源的微信开发项目
Dec 28 PHP
PHP实现批量生成App各种尺寸Logo
Mar 19 PHP
PHP中实现Bloom Filter算法
Mar 30 PHP
程序员的表白神器“520”大声喊出来
May 20 PHP
PHP入门教程之PHP操作MySQL的方法分析
Sep 11 PHP
Yii2设置默认控制器的两种方法
May 19 PHP
PHP文件后缀不强制为.php方法
Mar 31 PHP
php中yar框架实例用法讲解
Dec 27 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
thinkphp使用phpmailer发送邮件的方法
2014/11/24 PHP
PHP函数checkdnsrr用法详解(Windows平台用法)
2016/03/21 PHP
php+MySql实现登录系统与输出浏览者信息功能
2016/07/01 PHP
List the Stored Procedures in a SQL Server database
2007/06/20 Javascript
javascript while语句和do while语句的区别分析
2007/12/08 Javascript
jquery 多行文本框(textarea)高度变化
2013/07/03 Javascript
原生JS绑定滑轮滚动事件兼容常见浏览器
2014/06/30 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
2014/09/03 Javascript
JavaScript中使用指数方法Math.exp()的简介
2015/06/15 Javascript
JS+CSS实现下拉列表框美化效果(3款)
2015/08/15 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
2016/01/27 Javascript
基于JS实现数字+字母+中文的混合排序方法
2016/06/06 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
2017/02/18 Javascript
jQuery树插件zTree使用方法详解
2017/05/02 jQuery
JavaScript之underscore_动力节点Java学院整理
2017/07/03 Javascript
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
2017/09/06 NodeJs
JavaScript实现音乐自动切换和轮播
2017/11/05 Javascript
vueJs实现DOM加载完之后自动下拉到底部的实例代码
2018/08/31 Javascript
Python生成随机密码
2015/03/10 Python
python 实现敏感词过滤的方法
2019/01/21 Python
详解用Python实现自动化监控远程服务器
2019/05/18 Python
python 如何去除字符串头尾的多余符号
2019/11/19 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
经济实惠的名牌太阳镜和眼镜:Privé Revaux
2021/02/07 全球购物
C#中有没有运算符重载?能否使用指针?
2014/05/05 面试题
经管应届生求职信
2013/11/17 职场文书
学年自我鉴定
2014/01/16 职场文书
给实习单位的感谢信
2014/02/01 职场文书
淘宝好评语大全
2014/05/05 职场文书
研究生简历自我评
2015/03/11 职场文书
2015秋季幼儿园开学通知
2015/07/16 职场文书
MySQL 可扩展设计的基本原则
2021/05/14 MySQL
JS中如何优雅的使用async await详解
2021/10/05 Javascript
使用Redis做预定库存缓存功能
2022/04/02 Redis
Docker下安装Oracle19c
2022/04/13 Servers