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 相关文章推荐
GBK的页面输出JSON格式的php函数
Feb 16 PHP
使用PHP提取视频网站页面中的FLASH地址的代码
Apr 17 PHP
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
Aug 02 PHP
PHP实现读取一个1G的文件大小
Aug 24 PHP
destoon二次开发模板及调用语法汇总
Jun 21 PHP
linux下使用crontab实现定时PHP计划任务失败的原因分析
Jul 05 PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
Jul 22 PHP
取得单条网站评论以数组形式进行输出
Jul 28 PHP
Yii框架中memcache用法实例
Dec 03 PHP
PHP的Json中文处理解决方案
Sep 29 PHP
老生常谈文本文件和二进制文件的区别
Feb 27 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
Feb 07 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在字符串中查找指定字符串并删除的代码
2008/10/02 PHP
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
2009/10/11 PHP
php实现有趣的人品测试程序实例
2015/06/08 PHP
PHP重定向与伪静态区别
2017/02/19 PHP
一款jquery特效编写的大度宽屏焦点图切换特效的实例代码
2013/08/05 Javascript
仿百度的关键词匹配搜索示例
2013/09/25 Javascript
jquery实现弹出窗口效果的实例代码
2013/11/28 Javascript
js日期、星座的级联显示代码
2014/01/23 Javascript
原生js和jquery分别实现横向导航菜单效果
2016/05/13 Javascript
总结十个Angular.js由浅入深的面试问题
2016/08/26 Javascript
集合Bootstrap自定义confirm提示效果
2017/09/19 Javascript
vue的mixins属性详解
2018/03/14 Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
2018/09/15 Javascript
微信小程序自定义导航教程(兼容各种手机)
2018/12/12 Javascript
微信小程序canvas开发水果老虎机的思路详解
2020/02/07 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
vue用elementui写form表单时,在label里添加空格操作
2020/08/13 Javascript
[01:01]2020完美高校联赛(秋)西安落幕
2021/03/11 DOTA
Python基于分水岭算法解决走迷宫游戏示例
2017/09/26 Python
Python爬虫信息输入及页面的切换方法
2018/05/11 Python
Python实现将Excel转换成xml的方法示例
2018/08/25 Python
详解Python 重学requests发起请求的基本方式
2020/02/07 Python
Python2与Python3的区别详解
2020/02/09 Python
Windows系统下pycharm中的pip换源
2020/02/23 Python
用python实现学生管理系统
2020/07/24 Python
英国知名的护肤彩妆与时尚配饰大型综合零售电商:Unineed
2016/11/21 全球购物
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
英国日常交易网站:Wowcher
2018/09/04 全球购物
NFL加拿大官方网上商店:NHLShop.ca
2019/03/12 全球购物
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
英国123鲜花网站:123 Flowers
2019/07/07 全球购物
毕业生求职自荐信怎么写
2014/01/08 职场文书
党员自我对照检查材料
2014/08/19 职场文书
2014年专项整治工作总结
2014/11/17 职场文书
老公保证书怎么写
2015/02/26 职场文书
2015年会计个人工作总结
2015/04/02 职场文书