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
Zend Guard一些常见问题解答
Sep 11 PHP
php ignore_user_abort与register_shutdown_function 使用方法
Jun 14 PHP
php中数组首字符过滤功能代码
Jul 31 PHP
php 获取页面中指定内容的实现类
Jan 23 PHP
php禁止浏览器使用缓存页面的方法
Nov 07 PHP
示例详解Laravel重置密码代码重构
Aug 10 PHP
PHP针对多用户实现更换头像功能
Sep 04 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
Nov 29 PHP
利用PHP获取汉字首字母并且分组排序详解
Oct 22 PHP
workerman结合laravel开发在线聊天应用的示例代码
Oct 30 PHP
阿里云服务器搭建Php+Apache运行环境的详细过程
May 15 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 Image Resize图片大小调整的函数代码
2011/01/17 PHP
php中get_headers函数的作用及用法的详细介绍
2013/04/27 PHP
PHP 正则表达式小结
2015/02/12 PHP
ThinkPHP路由机制简介
2016/03/23 PHP
PHP根据session与cookie用户登录状态操作类的代码
2016/05/13 PHP
js弹窗代码 可以指定弹出间隔
2010/07/03 Javascript
JavaScript执行效率与性能提升方案
2012/12/21 Javascript
Javascript中的几种URL编码方法比较
2015/01/23 Javascript
jQuery动画与特效详解
2015/02/01 Javascript
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
JQuery中ajax方法访问web服务实例
2015/07/18 Javascript
JavaScript禁止复制与粘贴的实现代码
2016/05/16 Javascript
JS获取年月日时分秒的方法分析
2016/11/28 Javascript
使用JavaScript进行表单校验功能
2017/08/01 Javascript
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
解决axios会发送两次请求,有个OPTIONS请求的问题
2018/10/25 Javascript
小程序分享模块超级详解(推荐)
2019/04/10 Javascript
JS实现前端动态分页码代码实例
2020/06/02 Javascript
微信跳一跳python自动代码解读1.0
2018/01/12 Python
使用Python监控文件内容变化代码实例
2018/06/04 Python
Python中@property的理解和使用示例
2019/06/11 Python
记录一下scrapy中settings的一些配置小结
2020/09/28 Python
python装饰器代码深入讲解
2021/03/01 Python
html5本地存储 localStorage操作使用详解
2016/09/20 HTML / CSS
编程输出如下图形
2013/11/24 面试题
企业管理部经理岗位职责
2013/12/24 职场文书
优秀女职工事迹材料
2014/02/06 职场文书
幼儿园六一儿童节主持节目串词
2014/03/21 职场文书
公司授权委托书范本
2014/04/03 职场文书
公司委托书格式
2014/08/01 职场文书
公务员爱岗敬业演讲稿
2014/08/26 职场文书
治理商业贿赂工作总结
2015/08/10 职场文书
小学四年级班主任工作经验交流材料
2015/11/02 职场文书
pytorch 运行一段时间后出现GPU OOM的问题
2021/06/02 Python
JavaScript 与 TypeScript之间的联系
2021/11/27 Javascript
Go gorilla securecookie库的安装使用详解
2022/08/14 Golang