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():合并一个或多个数组。