PHP递归方法完美实现获取无限极子栏目功能,带层级输出
在做内容分类的时候往往需要采取子栏目机制,既某个栏目是另一个栏目的子栏目,依次层次可能很多,这时需要通过递归方法来实现获取,MySQL数据库中的数据都是平行的。本文完美实现这种层级关系,并输出层级关系的内容。
先看数据库中的分类结构
第一步:读取数据库内容
header("Content-type:text/html;charset=utf-8"); require('mysql.php'); $con = new mySQLHelper; $data = $con->chaxun('select * from lyg_urlfavorite_type order by tid asc,sort asc,id desc','');
第二步:数据进行递归、层级处理(重点)
//(循环数组,父栏目ID,层次) function getson($arr,$tid=0,$level){ static $res;//静态变量 只会被初始化一次 foreach($arr as $k=>$v){ $ctid = intval($v['tid']); $cid = intval($v['id']); if($ctid===$tid){ $tmp = $v; $tmp['levelsign'] = $level; $res[] = $tmp; getson($arr,$cid,$level+1); } } return $res; } //html构造方法 function levelhtml($level=0){ $x=0; $html=''; while($x<$level){ $html='—'.$html; $x++; } return $x===0?$html:'|'.$html; }
第三步:数据美化及输出
$_arr = getson($data,0,0); $color = array( 'c0'=>'#000000', 'c1'=>'#336666', 'c2'=>'purple', 'c3'=>'green', 'c4'=>'red', 'c5'=>'blue', ); foreach($_arr as $k=>$v){ echo "<span style='color:".$color['c'.$v['levelsign']]."'>".levelhtml($v['levelsign']).$v['typename'].'</span><br/>'; } echo "<br/>"; echo "<select name='typeid'>"; foreach($_arr as $k=>$v){ echo "<option style='color:".$color['c'.$v['levelsign']]."' value='".$v['id']."'>".levelhtml($v['levelsign']).$v['typename']."</option>"; } echo "</select>";
最终效果展示
博主卢雨高原创,转载请带上本文链接。
原文地址:http://luyugao.com/article/623.html