推荐php递归实现无限分级类

PHP1803浏览0条评论无限分类递归
<?php
/**
*无限级分类
*/
class Category{
  
    /**
    *无限极分类,压到一个数组
    */
    static function cateToOne($cate, $html='--', $pid=0, $level=0){
        $arr = array();
        foreach($cate as $k =>$v){
            if($v['pid'] == $pid){
                $v['level'] = $level + 1;
                $v['html'] = str_repeat($html, $level);
                $arr[] = $v;
                unset($cate[$k]);
                $arr = array_merge($arr, self::cateToOne($cate, $html, $v['id'], $level+1));
            }
        }
        return $arr;
    }
      
    /**
    *无限极分类,压成多维数组
    */
    static function cateToArray($cate, $child='child', $pid=0){
        $arr = array();
        foreach($cate as $k => $v){
            if($v['pid']==$pid){
                unset($cate[$k]);
                $v[$child] = self::cateToArray($cate, $child, $v['id']);
                $arr[] = $v;
            }
        }
        return $arr;
    }
      
    /**
    *通过子集查找所有父类,返回一个一位数组
    */
    static function getParents($cate, $id){
        $arr = array();
        foreach($cate as $k => $v){
            if($v['id'] == $id){
                $arr[] = $v;
                unset($cate[$k]);
                $arr = array_merge(self::getParents($cate, $v['pid']), $arr);
            }
        }
        return $arr;
    }
      
    /**
    *传递一个父级分类ID返回所有子分类ID
    */
    static function getChildsId($cate, $pid){
        $arr = array();
        foreach($cate as $k => $v){
            if($v['pid']==$pid){
                $arr[] = $v['id'];
                unset($cate[$k]);
                $arr = array_merge($arr, self::getChildsId($cate, $v['id']));
            }
        }
        return $arr;
    }
      
    /**
    *传递一个父级分类ID返回所有子分类
    */
    static function getChilds($cate, $pid){
        $arr = array();
        foreach($cate as $k => $v){
            if($v['pid']==$pid){
                $arr[] = $v;
                unset($cate[$k]);
                $arr = array_merge($arr, self::getChilds($cate, $v['id']));
            }
        }
        return $arr;
    }
}
?>

后盾网教程里面的无限类,自己还没用完,所以也没敲完代码,发现就转过来了,本站就使用的这个类。


转载http://wanql.sinaapp.com/blog_13.html

本文地址:http://wuheng.net/blog_2.html 转载请注明出处

分享到: