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 相关文章推荐
smtp邮件发送一例
Oct 09 PHP
php环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
Mar 16 PHP
php入门小知识
Mar 24 PHP
在php MYSQL中插入当前时间
Apr 06 PHP
用PHP实现的四则运算表达式计算实现代码
Aug 02 PHP
基于php无限分类的深入理解
Jun 02 PHP
ecshop后台编辑器替换成ueditor编辑器
Mar 03 PHP
详解Laravel视图间共享数据与视图Composer
Aug 04 PHP
详解thinkphp中的volist标签
Jan 15 PHP
PHPMAILER实现PHP发邮件功能
Apr 18 PHP
PHP基于mcript扩展实现对称加密功能示例
Feb 21 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
Oct 15 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实现简单的上传进度条
2015/11/17 PHP
php版微信js-sdk支付接口类用法示例
2016/10/12 PHP
使一个函数作为另外一个函数的参数来运行的javascript代码
2007/08/13 Javascript
ext实现完整的登录代码
2008/08/08 Javascript
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
jquery 提交值不为空的元素示例代码
2013/05/10 Javascript
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
jquery获得option的值和对option进行操作
2013/12/13 Javascript
浅谈javascript面向对象程序设计
2015/01/21 Javascript
JavaScript中数组的22种方法必学(推荐)
2016/07/20 Javascript
jQuery webuploader分片上传大文件
2016/11/07 Javascript
深入理解Node.js中通用基础设计模式
2017/09/19 Javascript
基于node打包可执行文件工具_Pkg使用心得分享
2018/01/24 Javascript
解决Vue2.x父组件与子组件之间的双向绑定问题
2018/03/06 Javascript
python之wxPython应用实例
2014/09/28 Python
详解python中的文件与目录操作
2017/07/11 Python
python多线程socket编程之多客户端接入
2017/09/12 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
2018/01/16 Python
Python基础之循环语句用法示例【for、while循环】
2019/03/23 Python
Python3.5多进程原理与用法实例分析
2019/04/05 Python
Python使用tkinter模块实现推箱子游戏
2019/10/08 Python
python读取文件指定行内容实例讲解
2020/03/02 Python
Python使用正则表达式实现爬虫数据抽取
2020/08/17 Python
详解如何修改python中字典的键和值
2020/09/29 Python
利用CSS3的线性渐变linear-gradient制作边框的示例
2016/06/02 HTML / CSS
HTML5 placeholder(空白提示)属性介绍
2013/08/07 HTML / CSS
Mytheresa英国官网:拥有160多个奢侈品品牌
2016/10/09 全球购物
巴西Bo.Bô官方在线商店:经营奢侈品时尚业务
2020/03/16 全球购物
Scotch Porter官方网站:男士美容产品
2020/08/31 全球购物
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
《长相思》听课反思
2014/04/10 职场文书
企业活动策划方案
2014/06/02 职场文书
六查六看心得体会
2014/10/14 职场文书
离婚起诉书范本
2015/05/18 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书
python中对列表的删除和添加方法详解
2022/02/24 Python