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 相关文章推荐
与数据库连接
Oct 09 PHP
10条PHP高级技巧[修正版]
Aug 02 PHP
php的array数组和使用实例简明教程(容易理解)
Mar 20 PHP
php post大量数据时发现数据丢失问题解决方法
Jun 20 PHP
php计算多维数组中所有值总和的方法
Jun 24 PHP
PHP浮点数的一个常见问题
Mar 10 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
Dec 12 PHP
PHP图片水印类的封装
Jul 06 PHP
Laravel中的Blade模板引擎示例详解
Oct 10 PHP
php实现的生成排列算法示例
Jul 25 PHP
laravel validate 设置为中文的例子(验证提示为中文)
Sep 29 PHP
laravel 获取某个查询的查询SQL语句方法
Oct 12 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实现时间轴函数代码
2011/10/08 PHP
php中函数前加&amp;符号的作用分解
2014/07/08 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
提高网站性能之 如何对待JavaScript
2009/10/31 Javascript
JavaScript基本编码模式小结
2012/05/23 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
2013/10/20 Javascript
事件委托与阻止冒泡阻止其父元素事件触发
2014/09/02 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
2015/06/19 Javascript
jquery实现全选功能效果的实现代码
2016/05/05 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
Vue中用props给data赋初始值遇到的问题解决
2018/11/27 Javascript
JavaScript面向对象程序设计中对象的定义和继承详解
2019/07/29 Javascript
[00:47]TI7不朽珍藏III——沙王不朽展示
2017/07/15 DOTA
Python日期操作学习笔记
2008/10/07 Python
python文件名和文件路径操作实例
2017/09/29 Python
python psutil库安装教程
2018/03/19 Python
python实现批量nii文件转换为png图像
2019/07/18 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
python 字典访问的三种方法小结
2019/12/05 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
2020/02/18 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
2021/01/08 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
西班牙太阳镜品牌:Hawkers
2018/03/11 全球购物
重新定义牛仔布,100美元以下:Warp + Weft
2018/07/25 全球购物
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
东芝官网商城:还原日式美学,打造美好生活
2018/12/27 全球购物
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
销售人员获奖感言
2014/02/05 职场文书
服务员岗位职责
2015/02/03 职场文书
大学运动会通讯稿
2015/07/18 职场文书
导游词之岳阳楼
2019/09/25 职场文书
mybatis中注解与xml配置的对应关系和对比分析
2021/08/04 Java/Android
JavaScript实现简单拖拽效果
2021/09/15 Javascript
剑指Offer之Java算法习题精讲二叉树专项训练
2022/03/21 Java/Android
Java 超详细讲解十大排序算法面试无忧
2022/04/08 Java/Android