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 相关文章推荐
PHP4和PHP5共存于一系统
Nov 17 PHP
使用apache模块rewrite_module (转)
Feb 14 PHP
dede3.1分页文字采集过滤规则详说(图文教程)续四
Apr 03 PHP
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
Aug 18 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
Nov 13 PHP
PHP面向对象程序设计之类常量用法实例
Aug 20 PHP
php中json_encode UTF-8中文乱码的更好解决方法
Sep 28 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
Dec 17 PHP
smarty简单应用实例
Nov 03 PHP
ThinkPHP打水印及设置水印位置的方法
Oct 14 PHP
MAC下通过改apache配置文件切换php多版本的方法
Apr 26 PHP
PHP中cookie知识点学习
May 06 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
rephactor 优秀的PHP的重构工具
2011/06/09 PHP
3种php生成唯一id的方法
2015/11/23 PHP
javascript document.images实例
2008/05/27 Javascript
与jquery serializeArray()一起使用的函数,主要来方便提交表单
2011/01/31 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
asm.js使用示例代码
2013/11/28 Javascript
node.js中实现同步操作的3种实现方法
2014/12/05 Javascript
JavaScript Window浏览器对象模型方法与属性汇总
2015/04/20 Javascript
javascript的BOM汇总
2015/07/16 Javascript
javascript文件加载管理简单实现方法
2015/07/25 Javascript
分享经典的JavaScript开发技巧
2015/11/21 Javascript
详解nodejs 文本操作模块-fs模块(四)
2016/12/22 NodeJs
完美实现js焦点轮播效果(一)
2017/03/07 Javascript
Vue实现内部组件轮播切换效果的示例代码
2018/04/07 Javascript
vue中v-model的应用及使用详解
2018/06/27 Javascript
Vue 组件参数校验与非props特性的方法
2019/02/12 Javascript
JavaScript 如何计算文本的行数的实现
2020/09/14 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
Python2.5/2.6实用教程 入门基础篇
2009/11/29 Python
python通过文件头判断文件类型
2015/10/30 Python
对TensorFlow的assign赋值用法详解
2018/07/30 Python
python 简单照相机调用系统摄像头实现方法 pygame
2018/08/03 Python
Django模板Templates使用方法详解
2019/07/19 Python
keras model.fit 解决validation_spilt=num 的问题
2020/06/19 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
美国著名首饰网站:BaubleBar
2016/08/29 全球购物
英国婴儿产品专家:Samuel Johnston
2020/04/20 全球购物
保险专业大专生求职信
2013/10/26 职场文书
毕业生求职的求职信
2013/12/05 职场文书
教育课题研究自我鉴定范文
2013/12/28 职场文书
人事主管岗位职责
2014/01/30 职场文书
2014年中班下学期工作总结
2014/12/11 职场文书
Nginx的反向代理实例详解
2021/03/31 Servers
python数据分析之用sklearn预测糖尿病
2021/04/22 Python
SpringBoot整合RabbitMQ的5种模式实战
2021/08/02 Java/Android
vue选项卡切换的实现案例
2022/04/11 Vue.js