<?php //分析 /* 福建省 福州市 龙岩市 广东省 广州市 佛山市 晋江市 江门市 江西省 南昌市 赣州市 宁都县 大余县 信封县 吉安市 cat_id pri parent_id 1 福建省 0 2 福州市 1 3 龙岩市 1 4 广东省 0 5 广州市 4 6 佛山市 4 7 晋江市 4 8 江门市 7 9 江西省 0 10 南昌市 9 11 赣州市 9 12 宁都县 11 13 大余县 11 14 信封县 11 15 吉安市 9 16 */ ?> <?php header("content-type:text/html;charset=utf-8"); //php实现无限分类 $area = array( array(‘cat_id‘=>1,‘province‘=>‘福建省‘,‘parent_id‘=>0), array(‘cat_id‘=>2,‘province‘=>‘龙岩市‘,‘parent_id‘=>1), array(‘cat_id‘=>3,‘province‘=>‘广东省‘,‘parent_id‘=>0), array(‘cat_id‘=>4,‘province‘=>‘佛山市‘,‘parent_id‘=>3), array(‘cat_id‘=>5,‘province‘=>‘江西省‘,‘parent_id‘=>0), array(‘cat_id‘=>6,‘province‘=>‘南昌市‘,‘parent_id‘=>5), array(‘cat_id‘=>7,‘province‘=>‘赣州市‘,‘parent_id‘=>5), array(‘cat_id‘=>8,‘province‘=>‘宁都县‘,‘parent_id‘=>7), ); /* 参数说明: $area:array 一个数组,存放了分类的栏目 $parent_id:int 用作查询的条件 $lev:int 实现子栏目的缩进 */ function sortarea($area,$parent_id = 0,$lev = 1){ //声明一个变量为static,这个变量是一个数组 static $list; foreach($area as $v){ //如果父id=0,则取出顶层栏目,之后通过递归传递过来cat_id,判断parent_id是否等于cat_id if($v[‘parent_id‘] == $parent_id){ //把$lev变量放进$v的数组中去 $v[‘lev‘] = $lev; $list[] = $v; sortarea($area,$v[‘cat_id‘],$lev+1); } } return $list; } $list = sortarea($area,0,1); foreach($list as $v){ //用str_repeat函数实现子栏目缩进 echo str_repeat(‘   ‘,$v[‘lev‘]),$v[‘province‘],‘<br />‘; } ?>
时间: 2024-10-22 01:53:04