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详解ASCII码对照表与字符转换
Dec 05 PHP
php二维数组排序详解
Nov 06 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
Apr 25 PHP
php自定义函数截取汉字长度
May 15 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
Dec 14 PHP
PHP编写RESTful接口的方法
Feb 21 PHP
PHP实现导出excel数据的类库用法示例
Oct 15 PHP
PHP静态成员变量和非静态成员变量详解
Feb 14 PHP
PHP手机号中间四位用星号*代替显示的实例
Jun 02 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
May 06 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
May 02 PHP
PHP Web表单生成器案例分析
Jun 02 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
在Yii框架中使用PHP模板引擎Twig的例子
2014/06/13 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
SyntaxHighlighter代码加色使用方法
2008/09/07 Javascript
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
javascript简易缓动插件(源码打包)
2012/02/16 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
2013/10/17 Javascript
JS中微信小程序自定义底部弹出框
2016/12/22 Javascript
jquery实现下拉框多选方法介绍
2017/01/03 Javascript
微信小程序 选项卡的简单实例
2017/05/24 Javascript
原生JS 购物车及购物页面的cookie使用方法
2017/08/21 Javascript
原生JS上传大文件显示进度条 php上传文件代码
2020/03/27 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
BootStrap table实现表格行拖拽效果
2018/12/01 Javascript
使用Angular Cli如何创建Angular私有库详解
2019/01/30 Javascript
基于Vue+Webpack拆分路由文件实现管理
2020/11/16 Javascript
[04:45]DOTA2上海特级锦标赛主赛事第四日RECAP
2016/03/06 DOTA
[01:21:36]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python实现将目录中TXT合并成一个大TXT文件的方法
2015/07/15 Python
python的mysqldb安装步骤详解
2017/08/14 Python
Python 比较两个数组的元素的异同方法
2017/08/17 Python
浅析python标准库中的glob
2020/03/13 Python
Python BeautifulReport可视化报告代码实例
2020/04/13 Python
Python3如何在服务器打印资产信息
2020/08/27 Python
python实现计算器简易版
2020/12/17 Python
Html5元素及基本语法详解
2016/08/02 HTML / CSS
数控加工专业毕业生自荐信
2013/09/27 职场文书
大学专科生推荐信范文
2013/11/23 职场文书
银行演讲稿范文
2014/01/03 职场文书
赔偿协议书范本
2014/04/15 职场文书
小班上学期幼儿评语
2014/12/30 职场文书
单身申明具结书
2015/02/26 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书
任命通知范文
2015/04/21 职场文书
银行文明优质服务培训心得体会
2016/01/09 职场文书
SQLServer2008提示评估期已过解决方案
2021/04/12 SQL Server
MySQL七种JOIN类型小结
2021/10/24 MySQL