Skip to content

Commit ca7c895

Browse files
committed
fixed more
1 parent 7c5aaf8 commit ca7c895

File tree

7 files changed

+1552
-23
lines changed

7 files changed

+1552
-23
lines changed

src/Funcs/FendArray.php

Lines changed: 230 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,230 @@
1+
<?php
2+
namespace Fend\Funcs;
3+
4+
/**
5+
* 数组的处理
6+
*
7+
**/
8+
class FendArray
9+
{
10+
/**
11+
* 去除值为零或空的键值
12+
* @param $array
13+
* @return array
14+
*/
15+
public static function getFilterArray($array)
16+
{
17+
if (empty($array)) {
18+
return $array;
19+
}
20+
foreach ($array as $key=> &$value) {
21+
if (empty($value)) {
22+
unset($array[$key]);
23+
}
24+
}
25+
return $array;
26+
}
27+
/**
28+
* 判断一个值是否在数组中
29+
* @param $find
30+
* @param $array
31+
* @param bool $type 是否区分大小写 1-区分大小写
32+
* @return bool
33+
*/
34+
public static function isInArray($find, $array, $type=true)
35+
{
36+
if (empty($array) || empty($find)) {
37+
return false;
38+
}
39+
foreach ($array as $value) {
40+
switch ($type) {
41+
case 1:
42+
if ($find == $value) {
43+
return true;
44+
}
45+
break;
46+
default:
47+
if ($find==$value || strtolower($find) === strtolower($value)) {
48+
return true;
49+
}
50+
break;
51+
}
52+
}
53+
return false;
54+
}
55+
/**
56+
* 获取数组某一键值数据
57+
* @param $array
58+
* @param $key
59+
*
60+
* @return array
61+
*/
62+
public static function getInArray($array, $key)
63+
{
64+
if (!empty($array) && is_array($array)) {
65+
foreach ($array as $k => $value) {
66+
if (is_object($value)) {
67+
$value = self::objectToArray($value);
68+
}
69+
$arrayId[] = $value[$key];
70+
}
71+
return $arrayId;
72+
}
73+
return [];
74+
}
75+
/**
76+
* 将对象转换为数组
77+
*
78+
* @param obj $object
79+
* @return array
80+
*/
81+
public static function objectToArray($object)
82+
{
83+
$arr = array();
84+
if (!empty($object)) {
85+
foreach ($object as $key => $value) {
86+
if (is_object($value)) {
87+
$arr[$key] = self::objectToArray($value); //判断类型是不是object
88+
} else {
89+
$arr[$key] = $value;
90+
}
91+
}
92+
}
93+
return $arr;
94+
}
95+
96+
//获取数组某一部分字段数据
97+
public static function getArrayByFields($array, $fields)
98+
{
99+
$dataAry = array();
100+
if (!empty($array)) {
101+
foreach ($array as $k => $value) {
102+
foreach ($fields as $field) {
103+
$dataAry[$k][$field] = $value[$field];
104+
}
105+
}
106+
}
107+
return $dataAry;
108+
}
109+
//获取数组某一部分字段数据
110+
public static function getFromOneArrayByKeys($array, $fields)
111+
{
112+
$dataAry = array();
113+
if (!empty($array)) {
114+
foreach ($fields as $field) {
115+
if (isset($array[$field])) {
116+
$dataAry[$field] = $array[$field];
117+
}
118+
}
119+
}
120+
return $dataAry;
121+
}
122+
123+
124+
//获取数组某一键值数据
125+
public static function getArrayBykey($array, $key)
126+
{
127+
$newArray = array();
128+
if (!empty($array)) {
129+
foreach ($array as $k => $value) {
130+
$newArray[$value[$key]] = $value;
131+
}
132+
}
133+
return $newArray;
134+
}
135+
136+
/**
137+
* 对一个二维数组自定义排序
138+
*
139+
* @param array $ary
140+
* @param string $compareField
141+
* @param string $seq = 'DESC'|'ASC'
142+
* @param int $sortFlag = SORT_NUMERIC | SORT_REGULAR | SORT_STRING
143+
* @return array
144+
*/
145+
public static function sort(&$ary, $compareField, $seq = 'DESC', $sortFlag = SORT_NUMERIC)
146+
{
147+
if (empty($ary)) {
148+
return array();
149+
}
150+
151+
$sortData = array();
152+
foreach ($ary as $key => $value) {
153+
$sortData[$key] = $value[$compareField];
154+
}
155+
($seq === 'DESC') ? arsort($sortData, $sortFlag) : asort($sortData, $sortFlag);
156+
157+
$ret = array();
158+
foreach ($sortData as $key => $value) {
159+
$ret[$key] = $ary[$key];
160+
}
161+
$ary = $ret;
162+
return $ary;
163+
}
164+
165+
//按数组值出现次数计数并降序排序返回结果
166+
public static function sortCountArray($array)
167+
{
168+
$countAry = array();
169+
if (!empty($array)) {
170+
foreach ($array as $id) {
171+
if (!isset($countAry[$id])) {
172+
$countAry[$id] = 1;
173+
continue;
174+
}
175+
$countAry[$id] ++;
176+
}
177+
}
178+
!empty($countAry) && arsort($countAry);
179+
180+
return $countAry;
181+
}
182+
183+
/**
184+
* 多维数组排序
185+
* @param array $array 需要排序的数组
186+
* @param string $key 根据哪个字段排序
187+
* @param string $type 排序的方式
188+
* @return array|string
189+
**/
190+
public static function arraySort($array, $keys, $type='asc')
191+
{
192+
if (!isset($array) || !is_array($array) || empty($array)) {
193+
return '';
194+
}
195+
if (!isset($keys) || trim($keys)=== '') {
196+
return '';
197+
}
198+
if (!isset($type) || $type=='' || !in_array(strtolower($type), array('asc','desc'))) {
199+
return '';
200+
}
201+
$keysvalue=array();
202+
foreach ($array as $key=>$val) {
203+
if (isset($val[$keys])) {
204+
$val[$keys] = str_replace('-', '', $val[$keys]);
205+
$val[$keys] = str_replace(' ', '', $val[$keys]);
206+
$val[$keys] = str_replace(':', '', $val[$keys]);
207+
$keysvalue[] =$val[$keys];
208+
} else {
209+
return false;
210+
}
211+
}
212+
asort($keysvalue); //key值排序
213+
reset($keysvalue); //指针重新指向数组第一个
214+
foreach ($keysvalue as $key=>$vals) {
215+
$keysort[] = $key;
216+
}
217+
$keysvalue = array();
218+
$count=count($keysort);
219+
if (strtolower($type) != 'asc') {
220+
for ($i=$count-1; $i>=0; $i--) {
221+
$keysvalue[] = $array[$keysort[$i]];
222+
}
223+
} else {
224+
for ($i=0; $i<$count; $i++) {
225+
$keysvalue[] = $array[$keysort[$i]];
226+
}
227+
}
228+
return $keysvalue;
229+
}
230+
}

0 commit comments

Comments
 (0)