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
$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 "".levelhtml($v['levelsign']).$v['typename'].'
';
}
echo "
";
echo "";
foreach($_arr as $k=>$v){
echo "".levelhtml($v['levelsign']).$v['typename']."";
}
echo "";
最终效果展示
博主卢雨高原创,转载请带上本文链接。