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 $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
Jun 21 PHP
zen cart新进商品的随机排序修改方法
Sep 10 PHP
drupal 代码实现URL重写
May 04 PHP
PHP中数字检测is_numeric与ctype_digit的区别介绍
Oct 04 PHP
php实现读取超大文件的方法
Jul 28 PHP
微信公众平台消息接口校验与消息接口响应实例
Dec 23 PHP
php 问卷调查结果统计
Oct 08 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
Nov 10 PHP
PHP使用file_get_content设置头信息的方法
Feb 14 PHP
PHP 芝麻信用接入的注意事项
Dec 01 PHP
PHP redis实现超迷你全文检索
Mar 04 PHP
详谈phpAdmin修改密码后拒绝访问的问题
Apr 03 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
linux iconv方法的使用
2011/10/01 PHP
PHP获取一年有几周以及每周开始日期和结束日期
2015/08/06 PHP
php 无限级分类 获取顶级分类ID
2016/03/13 PHP
根据key删除数组中指定的元素实现方法
2017/03/02 PHP
js 数组克隆方法 小结
2010/03/20 Javascript
JS字符串累加Array不一定比字符串累加快(根据电脑配置)
2012/05/14 Javascript
jquery判断元素是否隐藏的多种方法
2014/05/06 Javascript
js检测用户输入密码强度
2015/10/22 Javascript
jquery移动端TAB触屏切换实现效果
2020/12/22 Javascript
10个JavaScript中易犯小错误
2016/02/14 Javascript
Jquery Easyui菜单组件Menu使用详解(15)
2016/12/18 Javascript
微信小程序 template模板详解及实例代码
2017/03/09 Javascript
vue中post请求以a=a&amp;b=b 的格式写遇到的问题
2018/04/27 Javascript
vue实现微信分享功能
2018/11/28 Javascript
webpack 如何解析代码模块路径的实现
2019/09/04 Javascript
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
2020/04/09 Javascript
Python中请使用isinstance()判断变量类型
2014/08/25 Python
Python中使用PIPE操作Linux管道
2015/02/04 Python
最基础的Python的socket编程入门教程
2015/04/23 Python
在Python程序中操作MySQL的基本方法
2015/07/29 Python
Python中顺序表的实现简单代码分享
2018/01/09 Python
python如何实现内容写在图片上
2018/03/23 Python
基于Python2、Python3中reload()的不同用法介绍
2019/08/12 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
Python 批量读取文件中指定字符的实现
2020/03/06 Python
Jupyter 无法下载文件夹如何实现曲线救国
2020/04/22 Python
Selenium自动化测试工具使用方法汇总
2020/06/12 Python
Python openpyxl模块实现excel读写操作
2020/06/30 Python
美国最大的香水连锁店官网:Perfumania
2016/08/15 全球购物
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
澳大利亚顶级美发和美容贸易超市:glamaCo
2020/01/19 全球购物
编辑找工作求职信范文
2013/12/16 职场文书
优秀教师先进事迹
2014/01/22 职场文书
综治宣传月活动总结
2014/04/28 职场文书
大队委员竞选稿
2015/11/20 职场文书
彻底弄懂Python中的回调函数(callback)
2022/06/25 Python