71 lines
2.0 KiB
PHP
71 lines
2.0 KiB
PHP
<?php
|
||
/**
|
||
* 格式化数据结构类
|
||
*
|
||
* @author:刘孝全
|
||
* @email:q8197264@126.com
|
||
* @date :2023年03月3日
|
||
*/
|
||
namespace app\common\controller;
|
||
|
||
class FormatList
|
||
{
|
||
/**
|
||
* 无线级分类处理
|
||
*
|
||
* @param array $data 数据源
|
||
* @param string $idName 主键
|
||
* @param string $fieldName 父级字段
|
||
* @param string $childrenKey 子级字段名
|
||
* @return array
|
||
*
|
||
* @date 2023-03-3
|
||
*/
|
||
static function FormatCategory(array $data, string $idName = "id", string $fieldName = 'pid', $childrenKey = 'children')
|
||
{
|
||
$items = [];
|
||
foreach ($data as $item) {
|
||
$items[$item[$idName]] = $item;
|
||
}
|
||
$result = array();
|
||
foreach ($items as $item) {
|
||
if (isset($items[$item[$fieldName]])) {
|
||
$items[$item[$fieldName]][$childrenKey][] = &$items[$item[$idName]];
|
||
} else if ($item[$fieldName] == 0) {
|
||
$result[] = &$items[$item[$idName]];
|
||
}
|
||
}
|
||
return $result;
|
||
}
|
||
|
||
/**
|
||
* 递归排序,用于下拉分类选择菜单
|
||
*
|
||
* @param array $data 数据源
|
||
* @param string $idName 主键
|
||
* @param string $fieldName 父级字段
|
||
* @param string $childrenKey 子级字段名
|
||
* @return array
|
||
*
|
||
* @date 2023-03-3
|
||
*/
|
||
static function DropDownMenu($data, $pid = 0, $level=-1)
|
||
{
|
||
/*记录排序后的类别数组*/
|
||
static $list = array();
|
||
static $space = ['','├─','§§├─','§§§§├─','§§§§§§├─'];
|
||
$level++;
|
||
foreach ($data as $k => $v) {
|
||
if ($v['pid'] == $pid) {
|
||
if ($pid != 0) {
|
||
$v['title'] = $space[$level] . $v['title'];
|
||
}
|
||
/*将该类别的数据放入list中*/
|
||
$list[] = $v;
|
||
self::DropDownMenu($data, $v['id'],$level);
|
||
}
|
||
}
|
||
|
||
return $list;
|
||
}
|
||
} |