• 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);






    /**
     * 打印出来的效果是这样
     *  ├中国
        ├─┴北京
        ├─┴上海
        ├美国
        ├─┴纽约
        ├─┴华盛顿
        ├─┴加州福尼亚
     */
  • 相关阅读:
    ARM启动流程
    ARM机器码分析
    Ubuntu 14.04 dnw配置
    UNIX环境下的消息队列
    UNIX环境下的共享内存
    iptables详解
    iptables 相关名词的解释说明
    sphinx的安装配置和中文分词包coreseek
    linux防火墙iptables封IP,拒绝指定IP和网段的办法
    linux下注销其它用户或者tty的命令
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5104672.html
Copyright © 2020-2023  润新知