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 网络开发详解之远程文件包含漏洞
Apr 25 PHP
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
Nov 07 PHP
PHP+jQuery实现自动补全功能源码
May 15 PHP
php IP转换整形(ip2long)的详解
Jun 06 PHP
深入PHP许愿墙模块功能分析
Jun 25 PHP
xss防御之php利用httponly防xss攻击
Mar 21 PHP
PHP获取photoshop写入图片文字信息的方法
Mar 31 PHP
详解PHP的Yii框架的运行机制及其路由功能
Mar 17 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
Dec 14 PHP
PHP 实现页面静态化的几种方法
Jul 23 PHP
Laravel5.0+框架邮件发送功能实现方法图文与实例详解
Apr 23 PHP
php回调函数处理数组操作示例
Apr 13 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实现框架(一)
2006/10/09 PHP
PHP Parse Error: syntax error, unexpected $end 错误的解决办法
2012/06/05 PHP
PHP中对缓冲区的控制实现代码
2013/09/29 PHP
php查询mysql数据库并将结果保存到数组的方法
2015/03/18 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
2017/06/05 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
JS 用6N±1法求素数 实例教程
2009/10/20 Javascript
js动态设置div的值下例子
2013/10/29 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
简介JavaScript中substring()方法的使用
2015/06/06 Javascript
javascript 定时器工作原理分析
2016/12/03 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
2016/12/14 Javascript
Vue Spa切换页面时更改标题的实例代码
2017/07/15 Javascript
vue中的非父子间的通讯问题简单的实例代码
2017/07/19 Javascript
AngularJs+Bootstrap实现漂亮的计算器
2017/08/10 Javascript
Webpack打包字体font-awesome的方法示例
2018/04/26 Javascript
layui 对弹窗 form表单赋值的实现方法
2019/09/04 Javascript
微信小程序接入vant Weapp组件的详细步骤
2020/10/28 Javascript
[02:09:59]火猫TV国士无双dota2 6.82版本详解(下)
2014/09/29 DOTA
python 自动提交和抓取网页
2009/07/13 Python
Django发送html邮件的方法
2015/05/26 Python
Python 文件管理实例详解
2015/11/10 Python
python中is与双等于号“==”的区别示例详解
2017/11/21 Python
python字典排序的方法
2019/10/12 Python
python 实现提取log文件中的关键句子,并进行统计分析
2019/12/24 Python
SQL Server数据库笔试题和答案
2016/02/04 面试题
厨房领班竞聘演讲稿
2014/04/23 职场文书
医德考评自我评价
2014/09/14 职场文书
2014年幼儿园老师工作总结
2014/12/05 职场文书
党员公开承诺书2015
2015/01/21 职场文书
高中数学教学反思范文
2016/02/18 职场文书
2019运动会广播加油稿汇总
2019/08/21 职场文书
详解OpenCV曝光融合
2022/04/29 Python
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL