php 高效递归,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"]."
";

for($j=0;$j<  count($array);$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<=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);

/**

* 打印出来的效果是这样

*  ├中国

├─┴北京

├─┴上海

├美国

├─┴纽约

├─┴华盛顿

├─┴加州福尼亚

*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值