PHP一維陣列快速去重、去零
阿新 • • 發佈:2020-07-07
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():合併一個或多個數