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 Memcached应用实现代码
Feb 08 PHP
PHP中json_encode、json_decode与serialize、unserialize的性能测试分析
Jun 09 PHP
php&amp;mysql 日期操作小记
Feb 27 PHP
PHP将两个关联数组合并函数提高函数效率
Mar 18 PHP
PHP开发微信支付的代码分享
May 25 PHP
关于php几种字符串连接的效率比较(详解)
Feb 22 PHP
PHP设计模式之工厂模式实例总结
Sep 01 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
Nov 20 PHP
php nginx 实时输出的简单实现方法
Jan 21 PHP
PHP实现通过文本文件统计页面访问量功能示例
Feb 13 PHP
php数组遍历类与用法示例
May 24 PHP
MacOS下PHP7.1升级到PHP7.4.15的方法
Feb 22 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
初学CAKEPHP 基础教程
2009/11/02 PHP
PHP 可阅读随机字符串代码
2010/05/26 PHP
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
2010/02/07 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
JavaScript禁止页面操作的示例代码
2013/12/17 Javascript
js 实现浏览历史记录示例
2014/04/20 Javascript
jQuery中height()方法用法实例
2014/12/24 Javascript
浅析JavaScript 调试方法和技巧
2015/10/22 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
2016/06/23 Javascript
JS触发服务器控件的单击事件(详解)
2016/08/06 Javascript
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全(推荐)
2016/12/20 Javascript
Node.JS中事件轮询(Event Loop)的解析
2017/02/25 Javascript
JS查找英文文章中出现频率最高的单词
2017/03/20 Javascript
js获取文件里面的所有文件名(实例)
2017/10/17 Javascript
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
vue 自定义提示框(Toast)组件的实现代码
2018/08/17 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
python将ansible配置转为json格式实例代码
2017/05/15 Python
用python制作游戏外挂
2018/01/04 Python
Python爬虫设置代理IP的方法(爬虫技巧)
2018/03/04 Python
Python 复平面绘图实例
2019/11/21 Python
Django项目基础配置和基本使用过程解析
2019/11/25 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
基于keras 模型、结构、权重保存的实现
2020/01/24 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
2020/06/01 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
2020/09/29 Python
python实现测试工具(一)——命令行发送get请求
2020/10/19 Python
澳大利亚宠物食品和药物在线:Jumbo Pets
2018/03/24 全球购物
英国在线药房和在线医生:LloydsPharmacy
2019/10/21 全球购物
大学生蛋糕店创业计划书
2014/01/13 职场文书
自荐信需注意事项
2014/01/25 职场文书
大家检讨书5000字
2014/02/03 职场文书
英文求职信写作小建议
2014/02/16 职场文书
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL