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 array的学习笔记
May 10 PHP
用php制作简单分页(从数据库读取记录)的方法详解
May 04 PHP
深入PHP异步执行的详解
Jun 03 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
May 13 PHP
使用Huagepage和PGO来提升PHP7的执行性能
Nov 30 PHP
yii2.0实现验证用户名与邮箱功能
Dec 22 PHP
利用PHP命令行模式采集股票趋势信息
Aug 09 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
Mar 15 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 PHP
Smarty缓存机制实例详解【三种缓存方式】
Jul 20 PHP
laravel 使用auth编写登录的方法
Sep 30 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
一条久听不愿放下的DIY森海MX500,三言两语话神奇
2021/03/02 无线电
php创建、获取cookie及基础要点分析
2015/01/26 PHP
JavaScript网页制作特殊效果用随机数
2007/05/22 Javascript
Javascript 写的简单进度条控件
2008/01/22 Javascript
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
带左右箭头图片轮播的JS代码
2013/12/18 Javascript
JavaScript实现继承的4种方法总结
2014/10/16 Javascript
JS操作HTML自定义属性的方法
2015/02/10 Javascript
JS使用parseInt解析数字实现求和的方法
2015/08/05 Javascript
用户代理字符串userAgent可实现的四个识别
2015/09/20 Javascript
jquery实现简洁文件上传表单样式
2015/11/02 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
微信小程序 setData的使用方法详解
2017/04/20 Javascript
WebPack配置vue多页面的技巧
2018/05/15 Javascript
vue里面使用mui的弹出日期选择插件实例
2018/09/16 Javascript
浅谈Ant Design Pro 菜单自定义 icon
2020/11/17 Javascript
Python切片用法实例教程
2014/09/08 Python
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
django之使用celery-把耗时程序放到celery里面执行的方法
2019/07/12 Python
python基于Selenium的web自动化框架
2019/07/14 Python
Python列表删除元素del、pop()和remove()的区别小结
2019/09/11 Python
Python pip 安装与使用(安装、更新、删除)
2019/10/06 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
2020/04/07 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
2021/02/24 Python
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
澳大利亚天然护肤品、化妆品和健康产品一站式商店:Nourished Life
2018/12/02 全球购物
李维斯牛仔裤英国官方网站:Levi’s英国
2019/10/10 全球购物
说一下Linux下有关用户和组管理的命令
2016/01/04 面试题
新品发布会策划方案
2014/06/08 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话
2014/10/21 职场文书
违纪检讨书
2015/01/27 职场文书
Javascript中的解构赋值语法详解
2021/04/02 Javascript
Pytorch反向传播中的细节-计算梯度时的默认累加操作
2021/06/05 Python
postgresql 删除重复数据案例详解
2021/08/02 PostgreSQL