mirror of
https://github.com/crmeb/CRMEB.git
synced 2025-12-17 15:02:48 +00:00
更新订单页面和文章页面
This commit is contained in:
parent
aace56e7dc
commit
b08b7e4208
File diff suppressed because one or more lines are too long
104
extend/service/PHPTreeService.php
Normal file
104
extend/service/PHPTreeService.php
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name PHPTree
|
||||||
|
* @author crazymus < QQ:291445576 >
|
||||||
|
* @des PHP生成树形结构,无限多级分类
|
||||||
|
* @version 1.2.0
|
||||||
|
* @Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||||||
|
* @updated 2015-08-26
|
||||||
|
*/
|
||||||
|
class PHPTreeService{
|
||||||
|
|
||||||
|
protected static $config = array(
|
||||||
|
/* 主键 */
|
||||||
|
'primary_key' => 'id',
|
||||||
|
/* 父键 */
|
||||||
|
'parent_key' => 'pid',
|
||||||
|
/* 展开属性 */
|
||||||
|
'expanded_key' => 'expanded',
|
||||||
|
/* 叶子节点属性 */
|
||||||
|
'leaf_key' => 'leaf',
|
||||||
|
/* 孩子节点属性 */
|
||||||
|
'children_key' => 'children',
|
||||||
|
/* 是否展开子节点 */
|
||||||
|
'expanded' => false
|
||||||
|
);
|
||||||
|
|
||||||
|
/* 结果集 */
|
||||||
|
protected static $result = array();
|
||||||
|
|
||||||
|
/* 层次暂存 */
|
||||||
|
protected static $level = array();
|
||||||
|
/**
|
||||||
|
* @name 生成树形结构
|
||||||
|
* @param array 二维数组
|
||||||
|
* @return mixed 多维数组
|
||||||
|
*/
|
||||||
|
public static function makeTree($data,$options=array() ){
|
||||||
|
$dataset = self::buildData($data,$options);
|
||||||
|
$r = self::makeTreeCore(0,$dataset,'normal');
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 生成线性结构, 便于HTML输出, 参数同上 */
|
||||||
|
public static function makeTreeForHtml($data,$options=array()){
|
||||||
|
|
||||||
|
$dataset = self::buildData($data,$options);
|
||||||
|
$r = self::makeTreeCore(0,$dataset,'linear');
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 格式化数据, 私有方法 */
|
||||||
|
private static function buildData($data,$options){
|
||||||
|
$config = array_merge(self::$config,$options);
|
||||||
|
self::$config = $config;
|
||||||
|
extract($config);
|
||||||
|
|
||||||
|
$r = array();
|
||||||
|
foreach($data as $item){
|
||||||
|
$id = $item[$primary_key];
|
||||||
|
$parent_id = $item[$parent_key];
|
||||||
|
$r[$parent_id][$id] = $item;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 生成树核心, 私有方法 */
|
||||||
|
private static function makeTreeCore($index,$data,$type='linear')
|
||||||
|
{
|
||||||
|
extract(self::$config);
|
||||||
|
foreach($data[$index] as $id=>$item)
|
||||||
|
{
|
||||||
|
if($type=='normal'){
|
||||||
|
if(isset($data[$id]))
|
||||||
|
{
|
||||||
|
$item[$expanded_key]= self::$config['expanded'];
|
||||||
|
$item[$children_key]= self::makeTreeCore($id,$data,$type);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$item[$leaf_key]= true;
|
||||||
|
}
|
||||||
|
$r[] = $item;
|
||||||
|
}else if($type=='linear'){
|
||||||
|
$parent_id = $item[$parent_key];
|
||||||
|
self::$level[$id] = $index==0?0:self::$level[$parent_id]+1;
|
||||||
|
$item['level'] = self::$level[$id];
|
||||||
|
self::$result[] = $item;
|
||||||
|
if(isset($data[$id])){
|
||||||
|
self::makeTreeCore($id,$data,$type);
|
||||||
|
}
|
||||||
|
|
||||||
|
$r = self::$result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
||||||
Loading…
x
Reference in New Issue
Block a user