Let's talk about a case of PHP Infinitus classification, PHP classification case_PHP tutorial

WBOY
Release: 2016-07-12 08:53:15
Original
899 people have browsed it

Talk about a case of PHP Infinitus classification, PHP classification case

Author: Bailang Source: http://www.manks.top/php_tree_deep.html The copyright of this article belongs to the author , you are welcome to reprint, but this statement must be retained without the author's consent, and a link to the original text must be provided in an obvious position on the article page, otherwise we reserve the right to pursue legal liability. The original article has pictures.

In daily development, it is more or less inevitable to encounter the problem of Infinitus classification, because problems such as efficiency and logic have always made such problems more acute. Today we use the yii2 framework as the basis and the column Infinitus as an example to conduct a simple treatment of this problem.

First we have a column data table tree

The table structure is as shown below (original text with pictures)

The table structure looks very simple.

Let’s insert some test data

INSERT INTO `tree` 
(`id`, `parent_id`, `name`) 
VALUES 
(1, 0, 'A'), 
(2, 0, 'B'), 
(3, 1, 'a'), 
(4, 3, 'aa'), 
(5, 2, 'b'), 
(6, 4, 'aaa');

Copy after login

The tree structure is roughly as follows

|A 
|--a 
|----aa 
|------aaa 
|B 
|--b
Copy after login

This is exactly the data structure form we need. Let’s see how to process it to get the required results.

As we said before, it is based on yii2, so our writing method also follows object-oriented rules

class tree { 
    //访问index查看树形结构 
    public function actionIndex () { 
        $data = self::getTree(); 
        //为了方便测试,我们这里以json格式输出 
        \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; 
        return $data; 
    } 
    //获取树 
    public static function getTree () { 
        //这里我们直接获取所有的数据,然后通过程序进行处理 
        //在无限极分类中最忌讳的是对数据库进行层层操作,也就很容易造成内存溢出 
        //最后电脑死机的结果 
        $data = static::find()->all(); 
        return self::_generateTree($data); 
    } 
    //生成树 
    private static function _generateTree ($data, $pid = 0) { 
        $tree = []; 
        if ($data && is_array($data)) { 
            foreach($data as $v) { 
                if($v['parent_id'] == $pid) { 
                    $tree[] = [ 
                        'id' => $v['id'], 
                        'name' => $v['name'], 
                        'parent_id' => $v['parent_id'], 
                        'children' => self::_generateTree($data, $v['id']), 
                    ]; 
                } 
            } 
        } 
        return $tree; 
    } 
}

Copy after login

Let’s visit tree/index and take a look. The rendering is as follows

In this way we can see a very clear tree structure diagram, which is what we ultimately need.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1125076.htmlTechArticleTalk about a case of PHP Infinitus classification, PHP classification case Author: Bailang Source: http://www. manks.top/php_tree_deep.html The copyright of this article belongs to the author. You are welcome to reprint it, but you must...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template