时间:2021-07-01 10:21:17 帮助过:18人阅读
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无限极分类实例详解的详细内容,更多请关注Gxl网其它相关文章!