Home  >  Article  >  Backend Development  >  Let’s talk about a case of PHP Infinitus classification. PHP Infinitus classification display. PHP Infinitus classification drop-down box. PHP Infinitus classification letter.

Let’s talk about a case of PHP Infinitus classification. PHP Infinitus classification display. PHP Infinitus classification drop-down box. PHP Infinitus classification letter.

WBOY
WBOYOriginal
2016-07-29 08:50:521040browse

Author: Bailang Source: http://www.manks.top/php_tree_deep.html The copyright of this article belongs to the author. Reprinting is welcome, 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 issues 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 (the original text has pictures)

It seems that the table structure is very simple.

We insert several pieces of 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');

The tree structure is roughly as follows

|A 
|--a 
|----aa 
|------aaa 
|B 
|--b

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 the 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; 
    } 
}

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

so that we can see a very clear The tree structure diagram is what we ultimately need.

The above has introduced a case study on PHP Infinitus classification, including PHP and Infinitus content. I hope it will be helpful to friends who are interested in PHP tutorials.

Statement:
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