PHP二维数组实现去除重复项的方法【保留各个键值】


Posted in PHP onDecember 21, 2017

本文实例讲述了PHP二维数组实现去除重复项的方法。分享给大家供大家参考,具体如下:

对于如下二维数组,要求对其进行去重:

$arr = array(
     '0'=>array(
          'name'=>'james',
          'age'=>30,
          ),
     '1'=>array(
          'name'=>'susu',
          'age'=>26,
          ),
     '2'=>array(
          'name'=>'james',
          'age'=>30,
          ),
     'new'=>array(
          'name'=>'kube',
          'age'=>37,
          ),
     'list'=>array(
          'name'=>'kube',
          'age'=>27,
          ),
     );

1、 二维数组内部的一维数组中的值不能完全相同,删除其中重复的项:

代码如下:

<?php
$arr = array(
     '0'=>array(
          'name'=>'james',
          'age'=>30,
          ),
     '1'=>array(
          'name'=>'susu',
          'age'=>26,
          ),
      '2'=>array(
          'name'=>'james',
          'age'=>30,
          ),
      'new'=>array(
          'name'=>'kube',
          'age'=>37,
          ),
      'list'=>array(
          'name'=>'kube',
          'age'=>27,
          ),
      );
printf("Before tranform the array:<br>");  //输出原来的数组
print_r($arr);
echo "<br/>";
function more_array_unique($arr=array()){
  foreach($arr[0] as $k => $v){
    $arr_inner_key[]= $k;  //先把二维数组中的内层数组的键值记录在在一维数组中
  }
  foreach ($arras $k => $v){
    $v =join(",",$v);  //降维 用implode()也行
    $temp[$k] =$v;   //保留原来的键值 $temp[]即为不保留原来键值
  }
  printf("After split the array:<br>");
  print_r($temp);  //输出拆分后的数组
  echo"<br/>";
  $temp =array_unique($temp);  //去重:去掉重复的字符串
  foreach ($tempas $k => $v){
    $a = explode(",",$v);  //拆分后的重组 如:Array( [0] => james [1] => 30 )
    $arr_after[$k]= array_combine($arr_inner_key,$a); //将原来的键与值重新合并
  }
  //ksort($arr_after);//排序如需要:ksort对数组进行排序(保留原键值key) ,sort为不保留key值
  return$arr_after;
}
$arr_new = more_array_unique($arr); //调用去重函数
printf("Duplicate removal of the array:<br>");
print_r($arr_new);
echo "<br/>";
?>

输出结果:

Before tranform the array:  //原来数组
Array ( [0] => Array ( [name] => james [age] => 30 ) [1] => Array ([name] => susu [age] => 26 ) [2] => Array ( [name] => james [age]=> 30 ) [new] => Array ( [name] => kube [age] => 37 ) [list] =>Array ( [name] => kube [age] => 27 ) )
After split the array: //拆分后数组
Array ( [0] => james,30 [1] => susu,26 [2] => james,30 [new] =>kube,37 [list] => kube,27 )
Duplicate removal of thearray: //去重后数组
Array ( [0] => Array ( [name] => james [age] => 30 ) [1] => Array ([name] => susu [age] => 26 ) [new] => Array ( [name] => kube [age]=> 37 ) [list] => Array ( [name] => kube [age] => 27 ) )

2、 二维数组内部的一维数组因某一个键值不能相同,删除重复项:

针对某一个键值来进行去重

<?php
$arr= array(……); //同上的二维数组
functionsecond_array_unique_bykey($arr, $key){
  $tmp_arr = array();
  foreach($arr as $k => $v)
  {
    if(in_array($v[$key], $tmp_arr))  //搜索$v[$key]是否在$tmp_arr数组中存在,若存在返回true
    {
      unset($arr[$k]); //销毁一个变量 如果$tmp_arr中已存在相同的值就删除该值
    }
    else {
      $tmp_arr[$k] = $v[$key]; //将不同的值放在该数组中保存
    }
  }
  //ksort($arr); //ksort函数对数组进行排序(保留原键值key) sort为不保留key值
  return $arr;
  }
  $key ='name';
  $arr_key = second_array_unique_bykey($arr,$key);
  printf("As for the givenkey->%s:<br>",$key);
  print_r($arr_key);
  echo "<br/>";
?>

输出结果:

As for the given key->name:
Array ( [0] => Array ( [name] => james [age] => 30 ) [1] => Array ([name] => susu [age] => 26 ) [new] => Array ( [name] => kube [age]=> 37 ) )

PS:本站还有两款比较简单实用的在线文本去重复工具,推荐给大家使用:

在线去除重复项工具:
http://tools.3water.com/code/quchong

在线文本去重复工具:
http://tools.3water.com/aideddesign/txt_quchong

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
模仿OSO的论坛(四)
Oct 09 PHP
php在线打包程序源码
Jul 27 PHP
php木马webshell扫描器代码
Jan 25 PHP
PHP判断文件是否存在、是否可读、目录是否存在的代码
Oct 03 PHP
php文件服务实现虚拟挂载其他目录示例
Apr 17 PHP
CodeIgniter启用缓存和清除缓存的方法
Jun 12 PHP
php使用GD库创建图片缩略图的方法
Jun 10 PHP
php实现网站文件批量压缩下载功能
Oct 28 PHP
thinkPHP使用post方式查询时分页失效的解决方法
Dec 09 PHP
在php中设置session用memcache来存储的方法总结
Jan 14 PHP
Ubuntu 16.04下安装PHP 7过程详解
Mar 28 PHP
php使用ftp实现文件上传与下载功能
Jul 21 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
Dec 21 #PHP
PHP实现生成模糊图片的方法示例
Dec 21 #PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 #PHP
在云虚拟主机部署thinkphp5项目的步骤详解
Dec 21 #PHP
php获取微信共享收货地址的方法
Dec 21 #PHP
php实现socket推送技术的示例
Dec 20 #PHP
PHP实现模拟http请求的方法分析
Dec 20 #PHP
You might like
php将字符串随机分割成不同长度数组的方法
2015/06/01 PHP
PHP中使用curl入门教程
2015/07/02 PHP
JavaScript中的isXX系列是否继续使用的分析
2011/04/16 Javascript
javascript学习(一)构建自己的JS库
2013/01/02 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
2015/12/18 Javascript
jQuery实现摸拟alert提示框
2016/05/22 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
jQuery validate插件功能与用法详解
2016/12/15 Javascript
JavaScript实现经纬度转换成地址功能
2017/03/28 Javascript
移动端web滚动分页的实现方法
2017/05/05 Javascript
JavaScript之DOM_动力节点Java学院整理
2017/07/03 Javascript
inner join 内联与left join 左联的实例代码
2017/09/18 Javascript
详解如何在Angular优雅编写HTTP请求
2018/12/05 Javascript
js变量声明var使用与不使用的区别详解
2019/01/21 Javascript
JavaScript判断浏览器运行环境的详细方法
2019/06/30 Javascript
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
基于JQuery和DWR实现异步数据传递
2020/10/16 jQuery
Python中的CURL PycURL使用例子
2014/06/01 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
python密码错误三次锁定(实例讲解)
2017/11/14 Python
python在文本开头插入一行的实例
2018/05/02 Python
python装饰器代替set get方法实例
2019/12/19 Python
python 爬虫如何正确的使用cookie
2020/10/27 Python
canvas如何绘制钟表的方法
2017/12/13 HTML / CSS
HTML5 解决苹果手机不能自动播放音乐问题
2017/12/27 HTML / CSS
Mountain Warehouse德国官网:英国户外零售商
2019/08/11 全球购物
Vuori官网:运动服装的终级表现
2021/01/27 全球购物
高级Java程序员面试要点
2013/08/02 面试题
介绍一下Ruby的多线程处理
2013/02/01 面试题
素质拓展感言
2014/01/29 职场文书
2014中考励志标语
2014/06/05 职场文书
篮球比赛口号
2014/06/10 职场文书
住房租房协议书
2014/08/20 职场文书
2014年加油站站长工作总结
2014/12/23 职场文书
2016年端午节校园广播稿
2015/12/18 职场文书
详解Python如何批量采集京东商品数据流程
2022/01/22 Python