class CategoryAction extends CommonAction{ |
public function index(){ |
// echo APP_PATH; |
$cate = M( 'cate' )->order( 'sort ASC' )->select(); |
import( 'Class.Category' ,APP_PATH); |
$cate = Category::unlimitedForLevel( $cate ); |
$this ->cate = $cate ; |
$this ->display(); |
} |
} |
//封装 |
<?php |
Class Category { |
//组合一维数组 |
Static Public function unlimitedForLevel( $cate , $html = '--' , $pid = 0, $level = 0){ |
$arr = array (); |
foreach ( $cate as $v ) { |
if ( $v [ 'pid' ] == $pid ) { |
$v [ 'level' ] = $level + 1; |
$v [ 'html' ] = str_repeat ( $html , $level ); |
$arr [] = $v ; |
$arr = array_merge ( $arr , self::unlimitedForLevel( $cate , $html , $v [ 'id' ], $level + 1)); |
} |
} |
return $arr ; |
} |
//多维数组递归 |
Static Public function unlimitedForLayer ( $cate , $name = 'child' , $pid = 0) { |
$arr = array (); |
foreach ( $cate as $v ) { |
if ( $v [ 'pid' ] == $pid ) { |
$v [ $name ] = self::unlimitedForLayer( $cate , $name , $v [ 'id' ]); |
$arr [] = $v ; |
} |
} |
return $arr ; |
} |
|
//传递一个子分类ID返回所有的父级分类ID |
Static Public function getParentsId ( $cate , $id ) { |
$arr = array (); |
foreach ( $cate as $v ) { |
if ( $v [ 'id' ] == $id ) { |
$arr [] = $v [ 'id' ]; |
$arr = array_merge (self::getParentsId( $cate , $v [ 'pid' ]), $arr ); |
} |
} |
return $arr ; |
} |
//传递一个子分类ID返回所有的父级分类 |
Static Public function getParents ( $cate , $id ) { |
$arr = array (); |
foreach ( $cate as $v ) { |
if ( $v [ 'id' ] == $id ) { |
$arr [] = $v ; |
$arr = array_merge (self::getParents( $cate , $v [ 'pid' ]), $arr ); |
} |
} |
return $arr ; |
} |
//传递一个父级分类ID返回所有的子分类ID |
Static Public function getChildrenId ( $cate , $pid ) { |
$arr = array (); |
foreach ( $cate as $v ) { |
if ( $v [ 'pid' ] == $pid ) { |
$arr [] = $v [ 'id' ]; |
$arr = array_merge ( $arr , self::getChildrenId( $cate , $v [ 'id' ])); |
} |
} |
return $arr ; |
} |
//传递一个父级分类ID返回所有的子分类 |
Static Public function getChildren ( $cate , $pid ) { |
$arr = array (); |
foreach ( $cate as $v ) { |
if ( $v [ 'pid' ] == $pid ) { |
$arr [] = $v ; |
$arr = array_merge ( $arr , self::getChildrenId( $cate , $v [ 'id' ])); |
} |
} |
return $arr ; |
} |
|
} |
?> |