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 相关文章推荐
一些常用的php简单命令代码集锦
Sep 24 PHP
php magic_quotes_gpc的一点认识与分析
Aug 18 PHP
php快速url重写更新版[需php 5.30以上]
Apr 25 PHP
PHP与C#分别格式化文件大小的代码
May 14 PHP
php Imagick获取图片RGB颜色值
Jul 28 PHP
destoon实现VIP排名一直在前面排序的方法
Aug 21 PHP
PHP CURL 内存泄露问题解决方法
Feb 12 PHP
PHP 实现从数据库导出到.csv文件方法
Jul 06 PHP
laravel 5.4中实现无限级分类的方法示例
Jul 27 PHP
PHP分页显示的方法分析【附PHP通用分页类】
May 10 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
May 08 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
Feb 10 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 编写的日历
2006/10/09 PHP
PHP FTP操作类代码( 上传、拷贝、移动、删除文件/创建目录)
2014/05/10 PHP
PHP请求Socket接口测试实例
2016/08/12 PHP
html a标签-超链接中confirm方法使用介绍
2013/01/04 Javascript
js中的eventType事件及其浏览器支持性介绍
2013/11/29 Javascript
JS绘制生成花瓣效果的方法
2015/08/05 Javascript
JavaScript严格模式详解
2015/11/18 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
2017/05/20 jQuery
Nodejs 和 Electron ubuntu下快速安装过程
2018/05/04 NodeJs
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
jQuery.validate.js表单验证插件的使用代码详解
2018/10/22 jQuery
vue头部导航动态点击处理方法
2018/11/02 Javascript
Angular6项目打包优化的实现方法
2019/12/15 Javascript
vue中使用腾讯云Im的示例
2020/10/23 Javascript
python根据开头和结尾字符串获取中间字符串的方法
2015/03/26 Python
Python数据类型详解(一)字符串
2016/05/08 Python
Python字符串和字典相关操作的实例详解
2017/09/23 Python
Python入门之后再看点什么好?
2018/03/05 Python
Python3.5实现的罗马数字转换成整数功能示例
2019/02/25 Python
用python画一只可爱的皮卡丘实例
2019/11/21 Python
python运用pygame库实现双人弹球小游戏
2019/11/25 Python
关于numpy中eye和identity的区别详解
2019/11/29 Python
HTML5标签与HTML4标签的区别示例介绍
2013/07/18 HTML / CSS
非功能性需求都包括哪些方面
2013/10/29 面试题
初中体育教学反思
2014/01/14 职场文书
会计电算化学生个人的自我评价
2014/02/08 职场文书
学生打架检讨书
2014/02/14 职场文书
班级课外活动总结
2014/07/09 职场文书
夏季药店促销方案
2014/08/22 职场文书
住房抵押登记委托书
2014/09/27 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
网站文案策划岗位职责
2015/04/14 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书
nginx.conf配置文件结构小结
2022/04/08 Servers
Linux服务器离线安装 nginx的详细步骤
2022/06/16 Servers
字节飞书面试promise.all实现示例
2022/06/16 Javascript