php二维数组根据key去重

风吹南下 / 2023-08-23 / 原文

 

一、性能高,不易理解:

/**
 * 二维数组去重
 * @param $array    二维数组
 * @param $field    根据二维数组中的某个字段进行去重
 * @return array|false
 */
public function array_unique_key($array,$field)
 {
     if(empty($array) || !$field){
         return false;
     }
     //返回指定字段的一列数据
     $fields = array_column($array, $field);
     //去重
     $fields = array_unique($fields);
     //比较两个数组,返回交集,只比较键(key)
     $data   = array_intersect_key($array,$fields);
     //重置数组的键(key)
     $data   = array_values($data);
     return $data;
 }

 

二、性能低,容易理解:

 

public function array_unique_key($arr,$key)
{
$tmp_arr=array(); foreach($arr as $k => $v){ if(in_array($v[$key],$tmp_arr)){ //判断是否重复 unset($arr[$k]); //重复则删除 }else{ $tmp_arr[]=$v[$key]; //将值存储在临时数组中 } } return $arr; }