1. 程式人生 > >PHP一維陣列快速去重、去零

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():合併一個或多個數