Maison  >  Article  >  développement back-end  >  Arbre de classification PHP illimité [prend en charge le tri par sous-catégorie]

Arbre de classification PHP illimité [prend en charge le tri par sous-catégorie]

PHP中文网
PHP中文网original
2017-09-01 16:47:071534parcourir

Personne ne stipule que les classes doivent être utilisées. Vous pouvez également l'écrire en fonction. Les habitudes, styles et préférences de programmation de chacun sont différents. Le but de l'encapsulation dans les classes est de structurer et d'organiser le programme, plutôt que de le placer. au hasard., Concernant les multiples méthodes (vTree, hTree) contenues dans la classe, elles traitent principalement de différents scénarios commerciaux. vTree a une structure verticale sur une seule ligne, tandis que hTree a une structure arborescente.

ClassTree.class.php

<?php
/**
 * 无限分类树(支持子分类排序)
 * version:1.4
 * author:Veris
 * website:www.mostclan.com
 */
class ClassTree {
    /**
     * 分类排序(降序)
     */
    static public function sort($arr,$cols){
        //子分类排序
        foreach ($arr as $k => &$v) {
            if(!empty($v[&#39;sub&#39;])){
                $v[&#39;sub&#39;]=self::sort($v[&#39;sub&#39;],$cols);
            }
            $sort[$k]=$v[$cols];
        }
        if(isset($sort))
            array_multisort($sort,SORT_DESC,$arr);
        return $arr;
    }
    /**
     * 横向分类树
     */
    static public function hTree($arr,$pid=0){
        foreach($arr as $k => $v){
            if($v[&#39;pid&#39;]==$pid){
                $data[$v[&#39;id&#39;]]=$v;
                $data[$v[&#39;id&#39;]][&#39;sub&#39;]=self::hTree($arr,$v[&#39;id&#39;]);
            }
        }
        return isset($data)?$data:array();
    }
    /**
     * 纵向分类树
     */
    static public function vTree($arr,$pid=0){
        foreach($arr as $k => $v){
            if($v[&#39;pid&#39;]==$pid){
                $data[$v[&#39;id&#39;]]=$v;
                $data+=self::vTree($arr,$v[&#39;id&#39;]);
            }
        }
        return isset($data)?$data:array();
    }
}

Exemple de retour :

Array
(
    [4] => Array
        (
            [id] => 4
            [pid] => 0
            [name] => 上海
            [sort] => 2
        )

    [5] => Array
        (
            [id] => 5
            [pid] => 4
            [name] => 闵行
            [sort] => 0
        )

    [1] => Array
        (
            [id] => 1
            [pid] => 0
            [name] => 浙江
            [sort] => 0
        )

    [13] => Array
        (
            [id] => 13
            [pid] => 1
            [name] => 金华
            [sort] => 1
        )

    [10] => Array
        (
            [id] => 10
            [pid] => 1
            [name] => 宁波
            [sort] => 0
        )

    [6] => Array
        (
            [id] => 6
            [pid] => 10
            [name] => 宁海
            [sort] => 0
        )

)
Array
(
    [4] => Array
        (
            [id] => 4
            [pid] => 0
            [name] => 上海
            [sort] => 2
            [sub] => Array
                (
                    [5] => Array
                        (
                            [id] => 5
                            [pid] => 4
                            [name] => 闵行
                            [sort] => 0
                            [sub] => Array
                                (
                                )

                        )

                )

        )

    [1] => Array
        (
            [id] => 1
            [pid] => 0
            [name] => 浙江
            [sort] => 0
            [sub] => Array
                (
                    [13] => Array
                        (
                            [id] => 13
                            [pid] => 1
                            [name] => 金华
                            [sort] => 1
                            [sub] => Array
                                (
                                )

                        )

                    [10] => Array
                        (
                            [id] => 10
                            [pid] => 1
                            [name] => 宁波
                            [sort] => 0
                            [sub] => Array
                                (
                                    [6] => Array
                                        (
                                            [id] => 6
                                            [pid] => 10
                                            [name] => 宁海
                                            [sort] => 0
                                            [sub] => Array
                                                (
                                                )

                                        )

                                )

                        )

                )

        )

)
public function vTree($arr,$pid=0){
foreach($arr as $k => $v){
if($v[&#39;pid&#39;]==$pid){
$data[$v[&#39;id&#39;]]=$v;
$data+=vTree($arr,$v[&#39;id&#39;]);
}
}
return isset($data)?$data:array();
}


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn