php 二維陣列根據某欄位去重
阿新 • • 發佈:2019-01-07
有時候,查詢出來的陣列會有好多重複的資料,要想去除這些資料,有以下幾種方法:
第一種:二維陣列中直接去掉重複的鍵
<?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; }