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 相关文章推荐
用IE远程创建Mysql数据库的简易程序
Oct 09 PHP
Ping服务的php实现方法,让网站快速被收录
Feb 04 PHP
深入php 正则表达式的学习探讨
Jun 06 PHP
PHP不用递归实现无限分级的例子分享
Apr 18 PHP
PHP面向对象教程之自定义类
Jun 10 PHP
destoon二次开发常用数据库操作
Jun 21 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
Nov 14 PHP
php中mysql操作buffer用法详解
Mar 19 PHP
php实现在新浪云中使用imagick生成缩略图并上传的方法
Sep 26 PHP
php 三元运算符实例详细介绍
Dec 15 PHP
PHP数据库操作四:mongodb用法分析
Aug 16 PHP
thinkPHP事务操作简单案例分析
Oct 17 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
smarty实例教程
2006/11/19 PHP
网站用php实现paypal整合方法
2010/11/28 PHP
PHP 调试工具Debug Tools
2011/04/30 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
2015/07/01 PHP
使用PHP编写发红包程序
2015/07/22 PHP
thinkphp中的url跳转用法分析
2016/07/12 PHP
AJAX使用了UpdatePanel后无法使用alert弹出脚本
2010/04/02 Javascript
Javascript快速排序算法详解
2014/12/03 Javascript
jQuery中even选择器的定义和用法
2014/12/23 Javascript
基于javascript实现单选及多选的向右和向左移动实例
2015/07/25 Javascript
jquery中validate与form插件提交的方式小结
2016/03/26 Javascript
BootStrap使用file-input插件上传图片的方法
2016/09/05 Javascript
Javascript下拉刷新的简单实现
2017/02/14 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
2017/03/25 Javascript
vue2.0 与 bootstrap datetimepicker的结合使用实例
2017/05/22 Javascript
vue一步步实现alert功能
2017/07/05 Javascript
vue路由懒加载的实现方法
2018/03/12 Javascript
关于layui的下拉搜索框异步加载数据的解决方法
2019/09/28 Javascript
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
[01:14:35]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第一局
2016/02/26 DOTA
Python中第三方库Requests库的高级用法详解
2017/03/12 Python
Python3 安装PyQt5及exe打包图文教程
2019/01/08 Python
Python中三元表达式的几种写法介绍
2019/03/04 Python
wxpython自定义下拉列表框过程图解
2020/02/14 Python
基于jupyter代码无法在pycharm中运行的解决方法
2020/04/21 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
美国第二大团购网站:LivingSocial
2016/07/24 全球购物
remote接口和home接口主要作用
2013/05/15 面试题
建筑实习自我鉴定
2013/10/18 职场文书
建筑工程造价专业自荐信
2014/07/08 职场文书
自我管理的活动方案
2014/08/25 职场文书
业绩倒数第一的检讨书
2014/09/24 职场文书
单位作风建设剖析材料
2014/10/11 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
旷工检讨书1000字
2015/01/01 职场文书
浅谈Java父子类加载顺序
2021/08/04 Java/Android