PHP 多维数组去重

在网上找到很简洁的实用的方法:
1、使用“array_map('serialize', $arr)”将多维数组转换为以字符串形式的一维数组。

2、使用array_unique()去除一维数组中的重复值。

3、将去重后的一维数组重新转为多维数组。

实例:

function array_unique_new($arr) {
    $t = array_map('serialize', $arr);
    //利用serialize()方法将数组转换为以字符串形式的一维数组
    $t = array_unique($t);
    //去掉重复值
    $new_arr = array_map('unserialize', $t);
    //然后将刚组建的一维数组转回为php值
    return $new_arr;
}

以上就是本次主题的所有内容了,下面是自己跟进PHP可用函数,仿写的一个去重函数可忽略。

/**
     * 二维数组去重
     * @param array $arr
     * @return array
     */
    private static function arrayUnique ($data=[])
    {
        $tmp = array();
        foreach ($data as $key => $value) {
            foreach ($value as $key1 => $value1) {
                $value[$key1] = $key1 . '_|_' . $value1;
            }
            $tmp[$key] = implode(',|,', $value);
        }
        $tmp = array_unique($tmp);
        $newArr = array();
        foreach ($tmp as $k => $tmp_v) {
            $tmp_v2 = explode(',|,', $tmp_v);
            foreach ($tmp_v2 as $k2 => $v2) {
                $v2 = explode('_|_', $v2);
                $tmp_v3[$v2[0]] = $v2[1];
            }
            $newArr[$k] = $tmp_v3;
        }
        return $newArr;
    }

你可能感兴趣的:(PHP 多维数组去重)