Arrays.php
2.0 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php
namespace App\Helper;
/**
* 验证
*/
class Arrays
{
/**
* 把返回的数据集转换成Tree
* @param $list
* @param string $pk
* @param string $pid
* @param string $child
* @param int $root
* @return array
* @author zbj
* @date 2023/4/13
*/
public static function listToTree($list, $pk = 'id', $pid = 'pid', $child = 'children', $root = 0)
{
// 创建Tree
$tree = array();
if (is_array($list)) {
// 创建基于主键的数组引用
$refer = array();
foreach ($list as $key => $data) {
$refer[$data[$pk]] = &$list[$key];
}
foreach ($list as $key => $data) {
// 判断是否存在parent
$parentId = $data[$pid];
if ($root == $parentId) {
$tree[] = &$list[$key];
} else {
if (isset($refer[$parentId])) {
$parent = &$refer[$parentId];
$parent[$child][] = &$list[$key];
}
}
}
}
return $tree;
}
/**
* 分隔字符串成数组并按照指定的函数过滤数组
* @param $string
* @param string $filters
* @param string $delimiter
* @return array|false|string[]
* @author zbj
* @date 2023/4/13
*/
public static function splitFilterToArray($string, $filters = 'trim', $delimiter = ',')
{
if (!$string) {
return [];
}
$data = !is_array($string) ? explode($delimiter, $string) : $string;
$filters = explode(',', $filters);
if (!$filters) {//没有值或者没有过滤函数
return $data;
}
//过滤
foreach ($filters as $fun) {
if (!function_exists($fun)) {
continue;
}
$data = array_map($fun, $data);
}
return $data;
}
}