zoukankan      html  css  js  c++  java
  • php 用递归实现的无限级别分类

    <?php
    header("Content-type:text/html; charset=utf-8");
    /**
     * 
     * @category contry_category 实现一个无限级别分类,类似种类的划分,经常使用在栏目导航
     * 
     */


    /**
     +-------------------------------------------------------------------------------+
     |             id       name         类别id                                      |
     |              1       中国           0                                         |
     |              2       北京           1                                         |
     |              3       上海           1                                         |
     |              4       美国           0                                         |
     *              5       纽约           4                                         *
     *              6      华盛顿          4                                         *
     *              7    加州福尼亚        4                                         *
     +-------------------------------------------------------------------------------+
     * 
     *    类别id 为0的是顶级栏目
     *    类别id 为id同样的是所属分类
     */


    class contry_category{
         public $i =-1;
         public function index($array){
             $this->i++;
             if($array[$this->i]['category_id']==0){
                 echo "├".$array[$this->i]["name"]."<br />";
                 for($j=0;$j<  count($array);$j++){
                    if($array[$j]['category_id']==$array[$this->i]['id']){     //查看所属分类
                         echo "├─┴".$array[$j]["name"]."<br />";
                    }
                 }
             }
             foreach($array as $v){
                 if($v['category_id']==0)
                 $ary[]=$v['category_id'];        //获取几个顶级栏目。来确定递归几次
             }
             
             if($this->i<=count($ary))            
                  $this->index($array);            //递归
         }
    }
    $infos = array(array("id"=>1,'name'=>"中国","category_id"=>0),array("id"=>2,'name'=>"北京","category_id"=>1),array("id"=>3,'name'=>"上海","category_id"=>1),array("id"=>4,'name'=>"美国","category_id"=>0),array("id"=>5,'name'=>"纽约","category_id"=>4),array("id"=>6,'name'=>"华盛顿","category_id"=>4),array("id"=>7,'name'=>"加州福尼亚","category_id"=>4));
     
    $obj =new contry_category();
    $obj->index($infos);






    /**
     * 打印出来的效果是这样
     *  ├中国
        ├─┴北京
        ├─┴上海
        ├美国
        ├─┴纽约
        ├─┴华盛顿
        ├─┴加州福尼亚
     */
  • 相关阅读:
    CF 1292A 迷宫
    JSOI Salesman 树形Dp
    HDU-1051 一个DP问题
    洛谷 P2656 采蘑菇 树形DP+缩点+坑点
    JSOI 2016 病毒感染 辅助Dp问题
    Codeforces D. Color the Fence(贪心)
    Codeforces H. Maximal GCD(贪心)
    Codeforces J. A Simple Task(多棵线段树)
    Codeforces C. A Simple Task(状态压缩dp)
    子集生成的三种算法
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5104672.html
Copyright © 2011-2022 走看看