如何去掉多维数组的重复值

来源:互联网 发布:猎流网店优化 编辑:程序博客网 时间:2024/05/17 05:02

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;

}


//方法二://经过测试发现方法二比方法一执行的时间要快一倍
function array_unique_new_2($arr){
$new_arr = array();
foreach ($arr as $key => $v) {
        $v = join(",", $v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
        $temp[] = $v;
    }
    $temp = array_unique($temp); //去掉重复的字符串,也就是重复的一维数组


    foreach ($temp as $k => $v) {
         $temp[$k] = explode(",", $v); //再将拆开的数组重新组装
         array_push($new_arr, $temp[$k]);
    }
return  $new_arr;
}

function get_test(){

$arr = array(
array(
'sup_name' => '上海',
'cn_name' => 'EthylAcetate',
'en_name' => '乙酸乙酯1',
'pinyin' => 'yisuanyizhi',
'pro_info' => '耗材',
),
array(
'sup_name' => '上海2',
'cn_name' => 'EthylAcetate',
'en_name' => '乙酸乙酯2',
'pinyin' => 'yisuanyizhi',
'pro_info' => '耗材',
),
array(
'sup_name' => '上海4',
'cn_name' => 'EthylAcetate',
'en_name' => '乙酸乙酯1',
'pinyin' => 'yisuanyizhi',
'pro_info' => '耗材',
),
array(
'sup_name' => '上海',
'cn_name' => 'EthylAcetate',
'en_name' => '乙酸乙酯3',
'pinyin' => 'yisuanyizhi',
'pro_info' => '耗材',
),
array(
'sup_name' => '上海1',
'cn_name' => 'EthylAcetate',
'en_name' => '乙酸乙酯4',
'pinyin' => 'yisuanyizhi',
'pro_info' => '耗材',
),
array(
'sup_name' => '上海',
'cn_name' => 'EthylAcetate',
'en_name' => '乙酸乙酯3',
'pinyin' => 'yisuanyizhi',
'pro_info' => '耗材',
),
array(
'sup_name' => '上海1',
'cn_name' => 'EthylAcetate',
'en_name' => '乙酸乙酯4',
'pinyin' => 'yisuanyizhi',
'pro_info' => '耗材',
),
);

$new_arr = $this->array_unique_new($arr);

echo '<pre/>';

print_r($new_arr);

}

0 0
原创粉丝点击