1. 程式人生 > >php 二維陣列根據某欄位去重

php 二維陣列根據某欄位去重

有時候,查詢出來的陣列會有好多重複的資料,要想去除這些資料,有以下幾種方法:

第一種:二維陣列中直接去掉重複的鍵

<?php
function array_unique_fb($array2D){
 foreach ($array2D as $v){
  $v=join(',',$v); //降維,也可以用implode,將一維陣列轉換為用逗號連線的字串
  $temp[]=$v;
 }
 $temp=array_unique($temp); //去掉重複的字串,也就是重複的一維陣列
 foreach ($temp as $k => $v){
  $temp[$k]=explode(',',$v); //再將拆開的陣列重新組裝
 }
 return $temp;
}

第二種:二維陣列去掉重複值再拼接成新的陣列
<?php
function array_unique_fb($array2D){
 foreach ($array2D as $k=>$v){
  $v=join(',',$v); //降維,也可以用implode,將一維陣列轉換為用逗號連線的字串
  $temp[$k]=$v;
 }
 $temp=array_unique($temp); //去掉重複的字串,也就是重複的一維陣列 
 foreach ($temp as $k => $v){
  $array=explode(',',$v); //再將拆開的陣列重新組裝
  //下面的索引根據自己的情況進行修改即可
  $temp2[$k]['id'] =$array[0];
  $temp2[$k]['title'] =$array[1];
  $temp2[$k]['keywords'] =$array[2];
  $temp2[$k]['content'] =$array[3];
 }
 return $temp2;
}

但是上面兩種,都是把二維陣列轉換為一維陣列後每組資料進行對比,必須一模一樣才能去除,要是我有幾組資料除一個欄位不一樣,其他都一樣,該怎麼去除這些重複的資料呢
<?php
    //$arr->傳入陣列   $key->判斷的key值  
     function array_unset_tt($arr,$key){     
            //建立一個目標陣列  
            $res = array();        
            foreach ($arr as $value) {           
               //檢視有沒有重複項  
               if(isset($res[$value[$key]])){  
                  unset($value[$key]);  //有:銷燬  
               }else{    
                  $res[$value[$key]] = $value;  
               }    
            }  
            return $res;  
        }