Home >Backend Development >PHP Tutorial >php 用递归实现的无限级别归类

php 用递归实现的无限级别归类

WBOY
WBOYOriginal
2016-06-13 12:03:30820browse

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"]."
";
             for($j=0;$j                if($array[$j]['category_id']==$array[$this->i]['id']){     //查看所属分类
                     echo "├─┴".$array[$j]["name"]."
";
                }
             }
         }
         foreach($array as $v){
             if($v['category_id']==0)
             $ary[]=$v['category_id'];        //获取几个顶级栏目,来确定递归几次
         }
         
         if($this->i              $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);






/**
 * 打印出来的效果是这样
 *  ├中国
    ├─┴北京
    ├─┴上海
    ├美国
    ├─┴纽约
    ├─┴华盛顿
    ├─┴加州福尼亚
 */

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