PHP一维数组快速去重去零

1、一维数组去重

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

2、一维数组去零:

/**
     * 过滤数组值为0的数据,需为不重复的数组
     * @param array $data 待过滤数组
     * @param bool $resetIndex 是否保持原有索引
     * @return array
     */
    public static function arrayFilterZero(array $data, bool $resetIndex = true)
    {
        if (empty($data)) {
            return $data;
        }
        $zeroKey = array_search(0, $data);
        if ($zeroKey !== false) {
            unset($data[$zeroKey]);
            if ($resetIndex) {
                $data = array_merge($data);
            }
        }
        return $data;
    }

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

/**
     * 一维数组去重,返回格式为索引数组
     * @param array $data 待去重的数组
     * @param bool $isFilterZero 是否过滤数组值为0的数据
     * @return array
     */
    public static function arrayUnique(array $data, bool $isFilterZero = false): array
    {
        $data = array_keys(array_flip($data));
        if ($isFilterZero) {
            return self::arrayFilterZero($data, false);
        }
        return $data;
    }

    /**
     * 过滤数组值为0的数据,需为不重复的数组
     * @param array $data 待过滤数组
     * @param bool $resetIndex 是否保持原有索引
     * @return array
     */
    public static function arrayFilterZero(array $data, bool $resetIndex = true)
    {
        if (empty($data)) {
            return $data;
        }
        $zeroKey = array_search(0, $data);
        if ($zeroKey !== false) {
            unset($data[$zeroKey]);
            if ($resetIndex) {
                $data = array_merge($data);
            }
        }
        return $data;
    }

4、相关函数:

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

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

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

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

转载 : https://www.cnblogs.com/muzi-lee/p/13262897.html

posted @ 2021-10-30 14:16  搬砖小伙子  阅读(353)  评论(0)    收藏  举报