php无限极分类实现方法分析

 更新时间:2019年07月04日 11:52:31   作者:webbc  
这篇文章主要介绍了php无限极分类实现方法,结合实例形式分析了两种无限极分类的具体实现技巧与相关注意事项,需要的朋友可以参考下

本文实例讲述了php无限极分类实现方法。分享给大家供大家参考,具体如下:

今天给大家带来的是php的无限极分类技术,本人把无限极分类划分为两种。

首先我把数据库表给大家看看,数据库是tasks,数据库表也是tasks

这里写图片描述

第一种方法(数组法)

这种方法其实是先把所有的数据查询出来,重点在于生成的二维数组

<?php
  //分类方法
  function make_list($parent,$deep = 0){
    global $tasks;//申明全局变量
    global $strArr;//申明全局变量
    $qianzhui = str_repeat("&nbsp;",$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>";
?>

这里写图片描述

运行结果图

第二种方法(查表法)

这种方法其实是在一开始只查询出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("&nbsp;", $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字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》及《PHP数学运算技巧总结

希望本文所述对大家PHP程序设计有所帮助。

相关文章

  • PHP扩展之kafka安装应用案例详解

    PHP扩展之kafka安装应用案例详解

    这篇文章主要介绍了PHP扩展之kafka安装应用案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • 利用PHP内置SERVER开启web服务(本地开发使用)

    利用PHP内置SERVER开启web服务(本地开发使用)

    PHP 5.4.0起, CLI SAPI 提供了一个内置的Web服务器,这个内置的Web服务器主要用于本地开发使用,不可用于线上产品环境,URI请求会被发送到PHP所在的的工作目录Working Directory进行处理,除非你使用了-t参数来自定义不同的目录
    2020-01-01
  • PHP面向对象之里氏替换原则简单示例

    PHP面向对象之里氏替换原则简单示例

    这篇文章主要介绍了PHP面向对象之里氏替换原则,结合实例形式分析了php里氏替换原则的概念、原理、简单使用方法及相关注意事项,需要的朋友可以参考下
    2018-04-04
  • php使用strip_tags()去除html标签仍有空白的解决方法

    php使用strip_tags()去除html标签仍有空白的解决方法

    这篇文章主要介绍了php使用strip_tags()去除html标签仍有空白的解决方法,涉及php正则替换的相关操作技巧,需要的朋友可以参考下
    2016-07-07
  • 深入extjs与php参数交互的详解

    深入extjs与php参数交互的详解

    本篇文章是对extjs与php的参数交互进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP实现一维数组转二维数组的方法

    PHP实现一维数组转二维数组的方法

    这篇文章主要介绍了PHP实现一维数组转二维数组的方法,实例分析了php操作数组的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • PHP工厂模式Factory Pattern的实现及特点

    PHP工厂模式Factory Pattern的实现及特点

    工厂模式,是一种实例化对象的方式,只要输入需要实例化对象的名字,就可以通过工厂对象的相应工厂函数来制造你需要的对象,工厂模式的最主要作用就是对象创建的封装、简化创建对象操作
    2023-03-03
  • 解析将多维数组转换为支持curl提交的一维数组格式

    解析将多维数组转换为支持curl提交的一维数组格式

    本篇文章是对将多维数组转换为支持curl提交的一维数组格式实现代码进行了详细的分析介绍,需要的朋友参考下
    2013-07-07
  • php通过session防url攻击方法

    php通过session防url攻击方法

    这篇文章主要介绍了php通过session防url攻击方法,可通过session获取用户名再传入URL来防止URL攻击,是非常实用的技巧,需要的朋友可以参考下
    2014-12-12
  • php延迟静态绑定实例分析

    php延迟静态绑定实例分析

    这篇文章主要介绍了php延迟静态绑定,实例分析了延迟静态绑定的原理与实现技巧,需要的朋友可以参考下
    2015-02-02

最新评论