zoukankan      html  css  js  c++  java
  • php之无限极分类

    今天给大家带来的是php的无限极分类技术,本人把无限极分类划分为两种。
    首先我把数据库表给大家看看,数据库是tasks,数据库表也是tasks
    这里写图片描述

    1. 第一种方法(数组法)
      这种方法其实是先把所有的数据查询出来,重点在于生成的二维数组
    <?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>";
    ?>

    这里写图片描述
    运行结果图

    1. 第二种方法(查表法)
      这种方法其实是在一开始只查询出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>";
    ?>

    这里写图片描述

    今天是星期六,上午去了图书馆复习,中午回到宿舍,就写了这篇文章,希望得到大家的鼓励!

  • 相关阅读:
    Binary Tree Inorder Traversal
    Populating Next Right Pointers in Each Node
    Minimum Depth of Binary Tree
    Majority Element
    Excel Sheet Column Number
    Reverse Bits
    Happy Number
    House Robber
    Remove Linked List Elements
    Contains Duplicate
  • 原文地址:https://www.cnblogs.com/cnsec/p/13407094.html
Copyright © 2011-2022 走看看