Explication détaillée de la classification PHP Infinis

小云云
Libérer: 2023-03-21 18:44:01
original
6871 Les gens l'ont consulté

Pour faire simple, la classification Infinitus signifie qu'une catégorie peut être divisée en plusieurs sous-catégories, puis une sous-catégorie peut être divisée en plusieurs autres sous-catégories et ainsi de suite indéfiniment, tout comme Windows peut créer un nouveau dossier, puis dans ce dossier Vous pouvez également créer des dossiers, ainsi que des dossiers sous les dossiers.

Alors, comment PHP parvient-il à sa classification infinie ? Comment lister ses différentes catégories une à une ?

Tout d'abord, supposons qu'il existe un tel tableau

$arr = array(    0=>array(        'cid'=>1,        'pid'=>0,        'name'=>'亚洲',
    ),    1=>array(        'cid'=>2,        'pid'=>0,        'name'=>'北美洲',
    ),    2=>array(        'cid'=>3,        'pid'=>1,        'name'=>'中国',
    ),    3=>array(        'cid'=>4,        'pid'=>2,        'name'=>'美国',
    ),    4=>array(        'cid'=>5,        'pid'=>3,        'name'=>'北京',
    ),    5=>array(        'cid'=>6,        'pid'=>3,        'name'=>'河北',
    ),    6=>array(        'cid'=>7,        'pid'=>5,        'name'=>'东城区',
    ),    7=>array(        'cid'=>8,        'pid'=>5,        'name'=>'海淀区',
    ),
);
Copier après la connexion
Copier après la connexion

Nous avons besoin d'un affichage similaire à celui-ci, comme indiqué sur la figure
Explication détaillée de la classification PHP Infinis

Si nous voulez Si vous souhaitez exprimer ce tableau de manière intuitive comme le montre l'image ci-dessus, vous devez utiliser la récursivité de PHP pour l'implémenter. Alors, comment l'implémenter ? Regardez le code de base ci-dessous

Copier le code

private function GetTree($arr,$pid,$step){
    global $tree;    foreach($arr as $key=>$val) {        if($val['pid'] == $pid) {            $flg = str_repeat('└―',$step);            $val['name'] = $flg.$val['name'];            $tree[] = $val;            $this->GetTree($arr , $val['cid'] ,$step+1);
        }
    }    return $tree;
}
Copier après la connexion
Copier après la connexion

Copier le code
Ensuite, il nous suffit d'écrire un code d'appel

$newarr = $this->GetTree($arr, 0, 0);
Copier après la connexion
Copier après la connexion

Selon la sous-classe Trouvez toutes les informations de classification des parents par identifiant (dans le framework yii2)

Méthode 1 :

public static function get_parent_list($arr,$id){
        //$arr 所有分类列表
        //$id 父级分类id
        static $list=array();        foreach($arr as $u){            if($u['id']== $id){//父级分类id等于所查找的id
                $list[]=$u;                if($u['parent_id']>0){                    self::get_parent_list($arr,$u['parent_id']);

                }
            }
        }       return $list;
    }
Copier après la connexion
Copier après la connexion

De cette façon, les informations de classification peuvent être stockées dans le cache sans avoir besoin de requêtes récursives.
Méthode 2 : Requête récursive pour obtenir des informations de classification

    public static function get_parents($id){
        static $list = [];        $cat_data = Category::findOne($id)->toarray();        if($cat_data){            $list[] = $cat_data;                    $id = $cat_data['parent_id'];                    if($cat_data['parent_id'] > 0){                            self::get_parents($id);
                    }
        }        return $list;
    }
Copier après la connexion

Puisque nous devons parvenir à une classification infinie, nous devons savoir quelles sont ses sous-colonnes ?

Le tableau final implémenté se présente sous la forme :

[php] view plain copyArray  (  
    [0] => Array  
        (  
            [category_id] => 1  
            [category_name] => 关于我  
            [category_pid] => 0  
            [category_addtime] => 0  
            [category_order] => 0  
        )  

    [1] => Array  
        (  
            [category_id] => 2  
            [category_name] => 生活随笔  
            [category_pid] => 0  
            [category_addtime] => 0  
            [category_order] => 0  
        )  

    [2] => Array  
        (  
            [category_id] => 3  
            [category_name] => 文章类别  
            [category_pid] => 0  
            [category_addtime] => 0  
            [category_order] => 0  
            [category_child] => Array  
                (  
                    [0] => Array  
                        (  
                            [category_id] => 4  
                            [category_name] => Linux服务器  
                            [category_pid] => 3  
                            [category_addtime] => -28800  
                            [category_order] => 1  
                            [category_child] => Array  
                                (  
                                    [0] => Array  
                                        (  
                                            [category_id] => 5  
                                            [category_name] => linux优化  
                                            [category_pid] => 4  
                                            [category_addtime] => 0  
                                            [category_order] => 0  
                                        )  

                                    [1] => Array  
                                        (  
                                            [category_id] => 6  
                                            [category_name] => 虚拟化  
                                            [category_pid] => 4  
                                            [category_addtime] => 1478228220  
                                            [category_order] => 0  
                                        )  

                                    [2] => Array  
                                        (  
                                            [category_id] => 7  
                                            [category_name] => Mysql优化与开发  
                                            [category_pid] => 4  
                                            [category_addtime] => 1478188800  
                                            [category_order] => 0  
                                        )  

                                    [3] => Array  
                                        (  
                                            [category_id] => 8  
                                            [category_name] => 高可用与虚拟化  
                                            [category_pid] => 4  
                                            [category_addtime] => 1478394120  
                                            [category_order] => 0  
                                        )  

                                )  

                        )  

                    [1] => Array  
                        (  
                            [category_id] => 15  
                            [category_name] => Mysql  
                            [category_pid] => 3  
                            [category_addtime] => 1480555980  
                            [category_order] => 0  
                            [category_child] => Array  
                                (  
                                    [0] => Array  
                                        (  
                                            [category_id] => 16  
                                            [category_name] => 优化  
                                            [category_pid] => 15  
                                            [category_addtime] => 1480555980  
                                            [category_order] => 0  
                                        )  

                                    [1] => Array  
                                        (  
                                            [category_id] => 17  
                                            [category_name] => Sql编程  
                                            [category_pid] => 15  
                                            [category_addtime] => 1480556040  
                                            [category_order] => 8  
                                        )  

                                )  

                        )  

                )  

        )  

)
Copier après la connexion
Copier après la connexion

Alors, comment le tableau bidimensionnel que nous retirons de la base de données peut-il devenir un tableau comme celui ci-dessus ?
Exemple :

Nous souhaitons implémenter le tableau bidimensionnel suivant dans le formulaire ci-dessus.

[php] view plain copy

$arr=array(    
    array('id'=>'1','name'=>'北京','pid'=>'0'),    
    array('id'=>'2','name'=>'上海','pid'=>'0'),    
    array('id'=>'3','name'=>'浦东','pid'=>'2'),    
    array('id'=>'4','name'=>'朝阳','pid'=>'1'),    
    array('id'=>'5','name'=>'广州','pid'=>'0'),    
    array('id'=>'6','name'=>'三里屯','pid'=>'4'),   
    array('id'=>'7','name'=>'广东','pid'=>'5'),   
    array('id'=>'8','name'=>'三里','pid'=>'4'),  
    array('id'=>'10','name'=>'小胡同','pid'=>'8')  
    );
Copier après la connexion

La première méthode : utiliser l'index du tableau pour qu'il soit le même que le numéro d'identification de la clé primaire pour trouver la sous-colonne, ajoutez d'abord l'index au tableau :

[php] view plain copy

$arr=array(    
    1=>array('id'=>'1','name'=>'北京','pid'=>'0'),    
    2=>array('id'=>'2','name'=>'上海','pid'=>'0'),    
    3=>array('id'=>'3','name'=>'浦东','pid'=>'2'),    
    4=>array('id'=>'4','name'=>'朝阳','pid'=>'1'),    
    5=>array('id'=>'5','name'=>'广州','pid'=>'0'),    
    6=>array('id'=>'6','name'=>'三里屯','pid'=>'4'),   
    7=>array('id'=>'7','name'=>'广东','pid'=>'5'),   
    8=>array('id'=>'8','name'=>'三里','pid'=>'4'),  
    10=>array('id'=>'10','name'=>'小胡同','pid'=>'8')  
    );
Copier après la connexion
Copier après la connexion

Utilisez l'indice de l'index pour déterminer si la colonne a une colonne parent. Si elle existe, mettez. la colonne dans le tableau fils de la colonne parent
[php] view plain copy

function generateTree($items){  
    $tree = array();  
    foreach($items as $item){  
        //判断是否有数组的索引==  
        if(isset($items[$item['pid']])){     //查找数组里面是否有该分类  如 isset($items[0])  isset($items[1])  
            $items[$item['pid']]['son'][] = &$items[$item['id']]; //上面的内容变化,$tree里面的值就变化  
        }else{  
            $tree[] = &$items[$item['id']];   //把他的地址给了$tree  
        }    
    }  
    return $tree;  
}
Copier après la connexion
Copier après la connexion

Il y a un problème majeur avec le programme ci-dessus Avons-nous ajouté l'index du tableau manuellement ? Alors pouvons-nous ajouter automatiquement des index de tableau ? Bien sûr, le programme suivant peut être implémenté, en ajoutant automatiquement un index au tableau puis en plaçant la sous-colonne dans le tableau fils de la colonne parent. L'idée est la même que celle du programme ci-dessus

[php. ] afficher la copie simple

function make_tree($list,$pk='id',$pid='pid',$child='_child',$root=0){  
    $tree=array();   
    $packData=array();  
    foreach ($list as  $data) {  

    <span style="white-space:pre">    </span>//转换为带有主键id的数组  
        $packData[$data[$pk]] = $data; //$packData[1]=$data; $packData[2]=$data   
    }  
    foreach ($packData as $key =>$val){       
        if($val[$pid]==$root){   //代表跟节点         
            $tree[]=& $packData[$key];  
        }else{  
            //找到其父类  
            $packData[$val[$pid]][$child][]=& $packData[$key];  
        }  
    }  
    return $tree;  
}
Copier après la connexion
Copier après la connexion

Deuxième méthode : utiliser la récursivité pour trouver des sous-colonnes
Idée : utiliser la récursivité pour rechercher des sous-colonnes dans chaque colonne, jusqu'à ce que la dernière sous-colonne soit trouvée, puis exécuter le débogage couche par couche. Si tel est le cas, vous pouvez imprimer

tree Pour faciliter la compréhension, vous pouvez imprimer $tree pour observer les changements dans le tableau <🎜. >

[php] afficher la copie simple

array(&#39;id&#39;=>&#39;6&#39;,&#39;name&#39;=>&#39;三里屯&#39;,&#39;pid&#39;=>&#39;4&#39;),   
[php] view plain copyfunction make_tree1($list,$pk=&#39;id&#39;,$pid=&#39;pid&#39;,$child=&#39;_child&#39;,$root=0){  
    $tree=array();  
    foreach($list as $key=> $val){  
        if($val[$pid]==$root){  
            //获取当前$pid所有子类   
                unset($list[$key]);  
                if(! empty($list)){  
                    $child=make_tree1($list,$pk,$pid,$child,$val[$pk]); //来来来 找北京的子栏目 递归 空  

                    if(!empty($child)){  
                        $val[&#39;_child&#39;]=$child;  
                    }  
                }                
                $tree[]=$val;  
        }  
    }     
    return $tree;  
}
Copier après la connexion
Copier après la connexion
Afin de mieux comprendre la récursivité, vous pouvez trouver un petit programme à tester, tel que le programme de sommation suivant

Vous pouvez analyser le résultat de $n de 2, 3….. 10, au lieu de partir de 10, 9--2, j'ai compris comment la récursivité du programme ci-dessus est implémentée à partir de ce programme. Bref : la récursivité est une chose très intéressante, j'espère que tout le monde. peut bien le comprendre
[php] voir la copie brute

        function sum($n){  
            $a=0;  
            if($n>1){     
                $a=sum($n-1)+$n;  

                /*if($n>5){ 
                    echo "$n <br />" ; 
                }*/  
                echo "$n<br />";  
            }else{  
                $a=1;  
            }  

            return $a;  
        }  
        echo sum(10);
Copier après la connexion
Copier après la connexion
Obtenir les données de tous les identifiants de sous-catégories subordonnées en fonction de l'identifiant parent

#$id = 父级id, $array = 所有分类public function getSon($id,$array){
        static $list;        foreach ($array as $k => $v) {            if($v[&#39;parent_id&#39;] == $id){                $list[] = $array[$k];                self::getSon($v[&#39;id&#39;],$array);
            }
        }        return $list;
}
Copier après la connexion
Copier après la connexion
                                                                               >

Tout d'abord, permettez-moi de vous présenter, qu'est-ce que la classification Infinitus ?

Pour faire simple, la classification Infinitus signifie qu'une catégorie peut être divisée en plusieurs sous-catégories, puis une sous-catégorie peut être divisée indéfiniment en plusieurs autres sous-catégories, tout comme Windows peut créer un nouveau dossier, puis dans ce Vous pouvez créer des dossiers dans le dossier, et vous pouvez également créer des dossiers sous le dossierAlors, comment PHP parvient-il à sa classification infinie ? Comment lister ses différentes catégories une à une ?

Tout d'abord, supposons qu'il existe un tel tableau

Nous avons besoin d'un affichage similaire à celui-ci, comme indiqué sur la figure

$arr = array(    0=>array(        &#39;cid&#39;=>1,        &#39;pid&#39;=>0,        &#39;name&#39;=>&#39;亚洲&#39;,
    ),    1=>array(        &#39;cid&#39;=>2,        &#39;pid&#39;=>0,        &#39;name&#39;=>&#39;北美洲&#39;,
    ),    2=>array(        &#39;cid&#39;=>3,        &#39;pid&#39;=>1,        &#39;name&#39;=>&#39;中国&#39;,
    ),    3=>array(        &#39;cid&#39;=>4,        &#39;pid&#39;=>2,        &#39;name&#39;=>&#39;美国&#39;,
    ),    4=>array(        &#39;cid&#39;=>5,        &#39;pid&#39;=>3,        &#39;name&#39;=>&#39;北京&#39;,
    ),    5=>array(        &#39;cid&#39;=>6,        &#39;pid&#39;=>3,        &#39;name&#39;=>&#39;河北&#39;,
    ),    6=>array(        &#39;cid&#39;=>7,        &#39;pid&#39;=>5,        &#39;name&#39;=>&#39;东城区&#39;,
    ),    7=>array(        &#39;cid&#39;=>8,        &#39;pid&#39;=>5,        &#39;name&#39;=>&#39;海淀区&#39;,
    ),
);
Copier après la connexion
Copier après la connexion
Si nous voulez Si vous souhaitez exprimer ce tableau de manière intuitive comme le montre l'image ci-dessus, vous devez utiliser la récursivité de PHP pour l'implémenter. Alors, comment l'implémenter ? Regardez le code de base ci-dessous


Copier le codeExplication détaillée de la classification PHP Infinis

Copier le code

Ensuite, il nous suffit d'écrire un code d'appel

private function GetTree($arr,$pid,$step){
    global $tree;    foreach($arr as $key=>$val) {        if($val[&#39;pid&#39;] == $pid) {            $flg = str_repeat(&#39;└―&#39;,$step);            $val[&#39;name&#39;] = $flg.$val[&#39;name&#39;];            $tree[] = $val;            $this->GetTree($arr , $val[&#39;cid&#39;] ,$step+1);
        }
    }    return $tree;
}
Copier après la connexion
Copier après la connexion
Selon la sous-classe Trouvez toutes les informations de classification des parents par identifiant (dans le framework yii2)


Méthode 1 :

$newarr = $this->GetTree($arr, 0, 0);
Copier après la connexion
Copier après la connexion

De cette façon, les informations de classification peuvent être stockées dans le cache sans avoir besoin de requêtes récursives.

Méthode 2 : Requête récursive pour obtenir des informations de classification

public static function get_parent_list($arr,$id){
        //$arr 所有分类列表
        //$id 父级分类id
        static $list=array();        foreach($arr as $u){            if($u[&#39;id&#39;]== $id){//父级分类id等于所查找的id
                $list[]=$u;                if($u[&#39;parent_id&#39;]>0){                    self::get_parent_list($arr,$u[&#39;parent_id&#39;]);

                }
            }
        }       return $list;
    }
Copier après la connexion
Copier après la connexion
Puisque nous devons parvenir à une classification infinie, nous devons savoir quelles sont ses sous-colonnes ?


Le tableau final implémenté se présente sous la forme :

    public static function get_parents($id){
        static $list = [];        $cat_data = Category::findOne($id)->toarray();        if($cat_data){            $list[] = $cat_data;                    $id = $cat_data[&#39;parent_id&#39;];                    if($cat_data[&#39;parent_id&#39;] > 0){                            self::get_parents($id);
                    }
        }        return $list;
    }
Copier après la connexion

Alors, comment le tableau bidimensionnel que nous retirons de la base de données peut-il devenir un tableau comme celui ci-dessus ?

Exemple :

Nous souhaitons implémenter le tableau bidimensionnel suivant dans le formulaire ci-dessus.
[php] view plain copyArray  (  
    [0] => Array  
        (  
            [category_id] => 1  
            [category_name] => 关于我  
            [category_pid] => 0  
            [category_addtime] => 0  
            [category_order] => 0  
        )  

    [1] => Array  
        (  
            [category_id] => 2  
            [category_name] => 生活随笔  
            [category_pid] => 0  
            [category_addtime] => 0  
            [category_order] => 0  
        )  

    [2] => Array  
        (  
            [category_id] => 3  
            [category_name] => 文章类别  
            [category_pid] => 0  
            [category_addtime] => 0  
            [category_order] => 0  
            [category_child] => Array  
                (  
                    [0] => Array  
                        (  
                            [category_id] => 4  
                            [category_name] => Linux服务器  
                            [category_pid] => 3  
                            [category_addtime] => -28800  
                            [category_order] => 1  
                            [category_child] => Array  
                                (  
                                    [0] => Array  
                                        (  
                                            [category_id] => 5  
                                            [category_name] => linux优化  
                                            [category_pid] => 4  
                                            [category_addtime] => 0  
                                            [category_order] => 0  
                                        )  

                                    [1] => Array  
                                        (  
                                            [category_id] => 6  
                                            [category_name] => 虚拟化  
                                            [category_pid] => 4  
                                            [category_addtime] => 1478228220  
                                            [category_order] => 0  
                                        )  

                                    [2] => Array  
                                        (  
                                            [category_id] => 7  
                                            [category_name] => Mysql优化与开发  
                                            [category_pid] => 4  
                                            [category_addtime] => 1478188800  
                                            [category_order] => 0  
                                        )  

                                    [3] => Array  
                                        (  
                                            [category_id] => 8  
                                            [category_name] => 高可用与虚拟化  
                                            [category_pid] => 4  
                                            [category_addtime] => 1478394120  
                                            [category_order] => 0  
                                        )  

                                )  

                        )  

                    [1] => Array  
                        (  
                            [category_id] => 15  
                            [category_name] => Mysql  
                            [category_pid] => 3  
                            [category_addtime] => 1480555980  
                            [category_order] => 0  
                            [category_child] => Array  
                                (  
                                    [0] => Array  
                                        (  
                                            [category_id] => 16  
                                            [category_name] => 优化  
                                            [category_pid] => 15  
                                            [category_addtime] => 1480555980  
                                            [category_order] => 0  
                                        )  

                                    [1] => Array  
                                        (  
                                            [category_id] => 17  
                                            [category_name] => Sql编程  
                                            [category_pid] => 15  
                                            [category_addtime] => 1480556040  
                                            [category_order] => 8  
                                        )  

                                )  

                        )  

                )  

        )  

)
Copier après la connexion
Copier après la connexion

[php] view plain copy

La première méthode : utiliser l'index du tableau pour qu'il soit le même que le numéro d'identification de la clé primaire pour trouver la sous-colonne, ajoutez d'abord l'index au tableau :

[php] view plain copy

$arr=array(    
    1=>array(&#39;id&#39;=>&#39;1&#39;,&#39;name&#39;=>&#39;北京&#39;,&#39;pid&#39;=>&#39;0&#39;),    
    2=>array(&#39;id&#39;=>&#39;2&#39;,&#39;name&#39;=>&#39;上海&#39;,&#39;pid&#39;=>&#39;0&#39;),    
    3=>array(&#39;id&#39;=>&#39;3&#39;,&#39;name&#39;=>&#39;浦东&#39;,&#39;pid&#39;=>&#39;2&#39;),    
    4=>array(&#39;id&#39;=>&#39;4&#39;,&#39;name&#39;=>&#39;朝阳&#39;,&#39;pid&#39;=>&#39;1&#39;),    
    5=>array(&#39;id&#39;=>&#39;5&#39;,&#39;name&#39;=>&#39;广州&#39;,&#39;pid&#39;=>&#39;0&#39;),    
    6=>array(&#39;id&#39;=>&#39;6&#39;,&#39;name&#39;=>&#39;三里屯&#39;,&#39;pid&#39;=>&#39;4&#39;),   
    7=>array(&#39;id&#39;=>&#39;7&#39;,&#39;name&#39;=>&#39;广东&#39;,&#39;pid&#39;=>&#39;5&#39;),   
    8=>array(&#39;id&#39;=>&#39;8&#39;,&#39;name&#39;=>&#39;三里&#39;,&#39;pid&#39;=>&#39;4&#39;),  
    10=>array(&#39;id&#39;=>&#39;10&#39;,&#39;name&#39;=>&#39;小胡同&#39;,&#39;pid&#39;=>&#39;8&#39;)  
    );
Copier après la connexion
Copier après la connexion

利用索引的下标,判断该栏目是否存在父栏目,如果存在就把该栏目放到父栏目的son子数组里面
[php] view plain copy

function generateTree($items){  
    $tree = array();  
    foreach($items as $item){  
        //判断是否有数组的索引==  
        if(isset($items[$item[&#39;pid&#39;]])){     //查找数组里面是否有该分类  如 isset($items[0])  isset($items[1])  
            $items[$item[&#39;pid&#39;]][&#39;son&#39;][] = &$items[$item[&#39;id&#39;]]; //上面的内容变化,$tree里面的值就变化  
        }else{  
            $tree[] = &$items[$item[&#39;id&#39;]];   //把他的地址给了$tree  
        }    
    }  
    return $tree;  
}
Copier après la connexion
Copier après la connexion

上面这个程序有一个主要问题,数组的索引是我们手动添加的?那我们可不可以自动添加数组索引呢?当然可以,下面这个程序就实现了,自动为数组添加索引然后再把子栏目放到父栏目的son数组中,思想和上面的程序是一样的

[php] view plain copy

function make_tree($list,$pk=&#39;id&#39;,$pid=&#39;pid&#39;,$child=&#39;_child&#39;,$root=0){  
    $tree=array();   
    $packData=array();  
    foreach ($list as  $data) {  

    <span style="white-space:pre">    </span>//转换为带有主键id的数组  
        $packData[$data[$pk]] = $data; //$packData[1]=$data; $packData[2]=$data   
    }  
    foreach ($packData as $key =>$val){       
        if($val[$pid]==$root){   //代表跟节点         
            $tree[]=& $packData[$key];  
        }else{  
            //找到其父类  
            $packData[$val[$pid]][$child][]=& $packData[$key];  
        }  
    }  
    return $tree;  
}
Copier après la connexion
Copier après la connexion

第二种方法:使用递归来查找子栏目
思想:使用递归来查找每个栏目中的子栏目,直到找到最后一个子栏目以后再一层层往外运行调试的话,可以打印

tree中,,为了方便理解,可以打印$tree去观察数组的变化

[php] view plain copy

array(&#39;id&#39;=>&#39;6&#39;,&#39;name&#39;=>&#39;三里屯&#39;,&#39;pid&#39;=>&#39;4&#39;),   
[php] view plain copyfunction make_tree1($list,$pk=&#39;id&#39;,$pid=&#39;pid&#39;,$child=&#39;_child&#39;,$root=0){  
    $tree=array();  
    foreach($list as $key=> $val){  
        if($val[$pid]==$root){  
            //获取当前$pid所有子类   
                unset($list[$key]);  
                if(! empty($list)){  
                    $child=make_tree1($list,$pk,$pid,$child,$val[$pk]); //来来来 找北京的子栏目 递归 空  

                    if(!empty($child)){  
                        $val[&#39;_child&#39;]=$child;  
                    }  
                }                
                $tree[]=$val;  
        }  
    }     
    return $tree;  
}
Copier après la connexion
Copier après la connexion

为了更好的理解递归,大家可以找一个小程序测试一下例如下面这个求和的程序
大家可以分析一下$n的输出从2,3 …..10,而不是从10,9—-2,我从这个程序才理解了一下上面那个程序的递归是如何实现的,总之:递归是很有意思的一个东西,希望大家好好理解
[php] view plain copy

        function sum($n){  
            $a=0;  
            if($n>1){     
                $a=sum($n-1)+$n;  

                /*if($n>5){ 
                    echo "$n <br />" ; 
                }*/  
                echo "$n<br />";  
            }else{  
                $a=1;  
            }  

            return $a;  
        }  
        echo sum(10);
Copier après la connexion
Copier après la connexion

根据父id获得所有下级子类id的数据

#$id = 父级id, $array = 所有分类public function getSon($id,$array){
        static $list;        foreach ($array as $k => $v) {            if($v[&#39;parent_id&#39;] == $id){                $list[] = $array[$k];                self::getSon($v[&#39;id&#39;],$array);
            }
        }        return $list;
}
Copier après la connexion
Copier après la connexion

相关推荐:

php无限极分类生成分类树的实现方法介绍

php无限极分类入门教程

PHP无限极分类函数的实现方法实例详解

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal