PHP二维数组根据某个元素去重

方法1:

自写函数如下

<?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;

    }

?>

测试用例

<?php

$arr = array(
array(
'title'=>'1111','date'=>'ddddd'
),
array('title'=>'22222','date'=>'fffffff'),
array('title'=>'1111','date'=>'ggggggg')
);
$newArr = array_unset_tt($arr,'title');
echo '<pre>';
print_r(array_values($newArr));
?>

结果:

PHP二维数组根据某个元素去重

方法2:

<?php

$arr = array(
  '0' => array(
    'id' => 1,
    'count' =>1,
    ),
  '1' => array(
    'id' => 2,
    'count' =>1,
    ),
  '2' => array(
    'id' => 4,
    'count' =>1,
    ),
  '3' => array(
    'id' => 2,
    'count' =>1,
    ),
  );
$new = $news = $newss = array();
foreach ($arr as $key => $value) {
  
  if(!in_array($value['id'], $new)) {
    $new[] = $value['id'];  //$new保存不重复的id值
    $news[$key] = $value;   //$news保存不重复id的数组值
    $newss[$value['id']] = $key;  //$newss保存不重复的id的键值
  }else {
    $k = $newss[$value['id']];  //取出重复的id保存的第一个键值
    $count = (int)$news[$k]['count'];  //取出第一个相同id保存的count值
    $news[$k]['count'] = $count+1;     //赋值到新的数组
  }
}

var_dump($news);
?>

结果

PHP二维数组根据某个元素去重

参考引用:

https://blog.csdn.net/gaoxuaiguoyi/article/details/53127386

https://segmentfault.com/q/1010000007144881

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

使用新浪微博登陆