<?php
namespace Admin\Common;
class Category
{
//组合等级的方法,组合为一维数组,体现缩进
//添加文章的下拉列表
//有点吃内存哦
/**
* [forLevel description]
* @param [type] $category [二维数组]
* @param string $html [缩进字符串]
* @param integer $pid [父级ID]
* @param integer $level [等级]
* @return [type] [有联系的二维数组]
*/
public static function forLevel($category,$html="|----",$pid=0,$level=0)
{
$arr=array();
foreach ($category as $v) {
if($v['pid']==$pid){
$v['level']=$level+1; //写成两个==
$v['html']=str_repeat($html, $level);
$arr[]=$v;
$arr=array_merge($arr,self::forLevel($category,$html,$v['id'],$level+1));
}
}
return $arr;
}
/**
* [forLayer description]
* 组合多维数组,用于下拉菜单
* @param [type] $category [description]
* @param integer $pid [description]
* @return [type] [description]
*/
public static function forLayer($category,$pid=0)
{
$arr=array();
foreach ($category as $v) {
if($v['pid']==$pid){
$v['child']=self::forLayer($category,$v['id']); //递归是先进后出
$arr[]=$v;
}
}
return $arr;
}
// 面包屑路径,1>2>3
// 传一个子级ID,寻找所有父级ID
/**
* [pathlink description]
* @param [type] $category [description]
* @param [type] $id [id]
* @return [type] array [description]
*/
public static function pathLink($category,$id)
{
$arr=array();
foreach ($category as $v) {
if($v['id']==$id){
$arr[]=$v;
// $arr=array_merge($arr,self::pathlink($category,$v['pid']));
$arr=array_merge(self::pathlink($category,$v['pid']),$arr);
}
}
return $arr;
}
// 找子集分类的id 然后in语句找子分类的商品
/**
* [getChlidsId 获取子级id]
* @param [type] $category [description]
* @param [type] $pid [description]
* @return [type] [description]
*/
public static function getChlidsId($category,$pid)
{
$arr=array(); //static 两种不同的结果
foreach ($category as $v) {
if($v['pid']==$pid){
$arr[]=$v['id'];
$arr=array_merge($arr,self::getChlidsId($category,$v['id']));
}
}
return $arr;
}
/**
* [getChlids 获取子级分类]
* @param [type] $category [description]
* @param [type] $pid [description]
* @return [type] [description]
*/
public static function getChlids($category,$pid)
{
$arr=array(); //static 两种不同的结果
foreach ($category as $v) {
if($v['pid']==$pid){
$arr[]=$v;
$arr=array_merge($arr,self::getChlidsId($category,$v['id']));
}
}
return $arr;
}
}
// /**
// * 递归无限级分类 获取任意节点下所有子类
// $arrCate 待排序的数组
// * @param int
// $parent_id 父级节点
// * @param int
// $level 层级数
// * @return array
// $arrTree 排序后的数组
// */
// function getMenuTree($arrCat,$parent_id = 0, $level = 0)
// {
// static $arrTree= array(); //使用static代替global
// if( empty($arrCat)) return FALSE;
// $level++;
// foreach($arrCat as $key=> $value)
// {
// if($value['parent_id' ]== $parent_id)
// {
// $value[ 'level']= $level;
// $arrTree[] = $value;
// unset($arrCat[$key]); //注销当前节点数据,减少已无用的遍历
// getMenuTree($arrCat, $value['id'],$level);
// }
// }
// return $arrTree;
// }
// /**
// * 测试数据
// */
// $arrCate = array( //待排序数组
// array( 'id'=>1, 'name' =>'顶级栏目一', 'parent_id'=>0),
// array( 'id'=>2, 'name' =>'顶级栏目二', 'parent_id'=>0),
// array( 'id'=>3, 'name' =>'顶级栏目三', 'parent_id'=>0),
// array( 'id'=>4, 'name' =>'顶级栏目四', 'parent_id'=>0),
// array( 'id'=>5, 'name' =>'顶级栏目五', 'parent_id'=>0),
// array( 'id'=>6, 'name' =>'顶级栏目六', 'parent_id'=>0),
// array( 'id'=>7, 'name' =>'栏目三', 'parent_id'=>1),
// array( 'id'=>8, 'name' =>'栏目四', 'parent_id'=>3),
// array( 'id'=>9, 'name' =>'栏目五', 'parent_id'=>4),
// array( 'id'=>10, 'name' =>'栏目六', 'parent_id'=>2),
// array( 'id'=>11, 'name' =>'栏目七', 'parent_id'=>6),
// array( 'id'=>12, 'name' =>'栏目八', 'parent_id'=>6),
// array( 'id'=>13, 'name' =>'栏目九', 'parent_id'=>7),
// );
// header('Content-type:text/html;
// charset=utf-8'); //设置utf-8编码
// echo '<pre>';
// print_r(getMenuTree($arrCate, 0, 0));
// echo '</pre>';
?>