muzi-lee

PHP一维数组快速去重、去零

1、一维数组去重:

1     /**
2      * 一维数组去重,返回格式为索引数组
3      * @param array $data 待去重的数组
4      * @return array
5      */
6     public static function arrayUnique(array $data): array
7     {
8         return array_keys(array_flip($data));
9     }

2、一维数组去零:

 1     /**
 2      * 过滤数组值为0的数据,需为不重复的数组
 3      * @param array $data 待过滤数组
 4      * @param bool $resetIndex 是否保持原有索引
 5      * @return array
 6      */
 7     public static function arrayFilterZero(array $data, bool $resetIndex = true)
 8     {
 9         if (empty($data)) {
10             return $data;
11         }
12         $zeroKey = array_search(0, $data);
13         if ($zeroKey !== false) {
14             unset($data[$zeroKey]);
15             if ($resetIndex) {
16                 $data = array_merge($data);
17             }
18         }
19         return $data;
20     }

3、一维数组去重&&去零:

 1     /**
 2      * 一维数组去重,返回格式为索引数组
 3      * @param array $data 待去重的数组
 4      * @param bool $isFilterZero 是否过滤数组值为0的数据
 5      * @return array
 6      */
 7     public static function arrayUnique(array $data, bool $isFilterZero = false): array
 8     {
 9         $data = array_keys(array_flip($data));
10         if ($isFilterZero) {
11             return self::arrayFilterZero($data, false);
12         }
13         return $data;
14     }
15 
16     /**
17      * 过滤数组值为0的数据,需为不重复的数组
18      * @param array $data 待过滤数组
19      * @param bool $resetIndex 是否保持原有索引
20      * @return array
21      */
22     public static function arrayFilterZero(array $data, bool $resetIndex = true)
23     {
24         if (empty($data)) {
25             return $data;
26         }
27         $zeroKey = array_search(0, $data);
28         if ($zeroKey !== false) {
29             unset($data[$zeroKey]);
30             if ($resetIndex) {
31                 $data = array_merge($data);
32             }
33         }
34         return $data;
35     }

4、相关函数:

array_flip():交换数组中的键和值。

array_keys():返回数组中部分的或所有的键名。

array_search():在数组中搜索给定的值,如果成功则返回首个相应的键名。

array_merge():合并一个或多个数组。

相关文章: