php中自带的array_unique只能处理以为数组,要想处理二维数据,需要自己实现,关于数组重复又两种理解,一种是二维下的某个键值重复就认定该数组是重复的,如:

$arr = array(
    array('name'=>'liubeijing','age'=>22),
    array('name'=>'liubeijing','age'=>21)
);

要解决思路:

function assoc_unique($arr,$key){
    $temp = new array();
    foreach($arr as $key=>$val){
        if(in_array($val[$key],$temp)){
            unset($arr[$key]);
        }else{
            $temp[] = $val[$key];
        }
    }
    return $arr;
}

第二种重复的概念,是两个数组完全是一样的,如:

$arr = array(
    array('name'=>'liubeijing','age'=>21),
    array('name'=>'liubeijing','age'=>21)
);

实现思路如下:

function assoc_full_unique($arr){
    $temp = array();
    foreach($arr as $key=>$val){
        $count = 0;
        foreach($val as $key2=>$val2){
            if(in_array($val2,$temp)){
                $count++;
            }else{
                $temp[] = $val2;
            }
        }
        if($count == count($val)){
            unset($arr[$key]);
        }
    }
    return $arr;
}