这篇文章介绍的内容是关于PHP中实用无限级分类 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
在我们工作中,无限级分类应用非常多,其实其思想并不难,无非运用递归思想自己调用自己罢了。下面就来看看我写的无限级分类函数:
header("content-type:text/html;charset=utf-8");//测试数组
$arr=array(
array('id'=>2,'name'=>'分类2','parent_id'=>1),
array('id'=>9,'name'=>'分类9','parent_id'=>8),
array('id'=>1,'name'=>'分类1','parent_id'=>0),
array('id'=>7,'name'=>'分类7','parent_id'=>0),
array('id'=>3,'name'=>'分类3','parent_id'=>2),
array('id'=>4,'name'=>'分类4','parent_id'=>0),
array('id'=>6,'name'=>'分类6','parent_id'=>5),
array('id'=>8,'name'=>'分类8','parent_id'=>7),
array('id'=>5,'name'=>'分类5','parent_id'=>4)
);/**
* 已知子类id 得到父类树形结构
* @param [type] $data [要查询的数组]
* @param [type] $id [子类id]
* @param integer $level [缩进系数]
* @param boolean $isClear [调用时为true,多次调用不相互叠加]
* @return [type] [返回结果树形结构]
*/function getParent($data,$id,$level=0,$is_Clear=false){
static $_rec = array(); if ($is_Clear == true) { $_rec = array();
} foreach ($data as $k=>$v) { if ( $v['id'] == $id) { $_rec[] =$v;
// if ($v['parent_id'] != 0) {
getParent($data,$v['parent_id']); // }
}
} $rec = array_reverse($_rec); for ($i=0; $i
$rec[$i]['level']=$level; $level++;
} //把自己拿出来,自己不属于父类
array_pop($rec); return $rec;
}/**
* 已知父类id找 得到子类树形结构
* @param [type] $data [要查询的数组]
* @param [type] $id [父类id]
* @param integer $level [缩进系数]
* @param boolean $isClear [调用时为true,多次调用不相互叠加]
* @return [type] [返回结果树形结构]
*/function getChilds($data,$id,$level=0,$isClear=false){
static $rec = []; if ($isClear == true) { $rec =[];
} foreach ($data as $k => $v) { if ($v['parent_id'] == $id) { $v['level']=$level; $rec[] =$v;
getChilds($data,$v['id'],++$level);
}
} return $rec;
}/**
* 已知父类id,得到子类id树形结构;区别在于$row[]=$v['id'],只赋值id;
* getParent(),可改写成getParentid();
* @param [type] $data [description]
* @param [type] $id [description]
* @param boolean $col [description]
* @return [type] [description]
*/
function getChildsId($data,$id,$col=false){
static $row=array(); if($col) $row=array(); foreach ($data as $k => $v) { if($v['parent_id'] ==$id){ $row[]=$v['id'];
getChildsId($data,$v['id']);
}
} return $row;
}/**
* 已知父类id,得到树形结构;
* 结合getParent(),若不弹出自己,即已知子类id,得到树形结构
* @param [type] $data [description]
* @param [type] $parent_id [description]
* @param integer $level [description]
* @param boolean $col [description]
* @return [type] [description]
*/function tree($data,$parent_id,$level=0,$col=false){
static $res=array(); if($col) $res=array(); foreach ($data as $k => $v) {
if($v['parent_id'] == $parent_id){
$v['level']=$level;
$res[]=$v;
tree($data,$v['id'],$level+1);
}
} return $res;
}希望大家留下宝贵的意见,来完善和丰富我的博客,欢迎交流学习。
相关推荐:
立即学习“PHP免费学习笔记(深入)”;
以上就是PHP中实现无限级分类的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号