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 远程文件管理,可以给表格排序,遍历目录,时间排序
Aug 07 PHP
php中使用Imagick实现图像直方图的实现代码
Aug 30 PHP
PHP+jQuery 注册模块开发详解
Oct 14 PHP
smarty中js的调用方法示例
Oct 27 PHP
用php守护另一个php进程的例子
Feb 13 PHP
54个提高PHP程序运行效率的方法
Jul 19 PHP
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
Jan 08 PHP
Laravel中注册Facades的步骤详解
Mar 16 PHP
orm获取关联表里的属性值
Apr 17 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 PHP
php根据地址获取百度地图经纬度的实例方法
Sep 03 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 20 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 和 XML: 使用expat函数(一)
2006/10/09 PHP
PHP下对数组进行排序的函数
2010/08/08 PHP
Yii2使用$this-&gt;context获取当前的Module、Controller(控制器)、Action等
2017/03/29 PHP
Laravel 关联模型-关联新增和关联更新的方法
2019/10/10 PHP
基于PHP实现堆排序原理及实例详解
2020/06/19 PHP
jQuery中detach()方法用法实例
2014/12/25 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
利用Javascript仿Excel的数据透视分析功能
2016/09/07 Javascript
详解JavaScript的闭包、IIFE、apply、函数与对象
2016/12/21 Javascript
基于node.js制作简单爬虫教程
2017/06/29 Javascript
详解webpack babel的配置
2018/01/09 Javascript
jQuery实现碰到边缘反弹的动画效果
2018/02/24 jQuery
Vue的路由动态重定向和导航守卫实例
2018/03/17 Javascript
关于Angularjs中自定义指令一些有价值的细节和技巧小结
2018/04/22 Javascript
vee-validate vue 2.0自定义表单验证的实例
2018/08/28 Javascript
JS实现的自定义map方法示例
2019/05/17 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
基于aotu.js实现微信自动添加通讯录中的联系人功能
2020/05/28 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
python两种遍历字典(dict)的方法比较
2014/05/29 Python
python实现汉诺塔方法汇总
2016/07/25 Python
pytorch 把MNIST数据集转换成图片和txt的方法
2018/05/20 Python
Pandas Shift函数的基础入门学习笔记
2018/11/16 Python
如何通过python的fabric包完成代码上传部署
2019/07/29 Python
Django多进程滚动日志问题解决方案
2019/12/17 Python
使用Python实现牛顿法求极值
2020/02/10 Python
python线程join方法原理解析
2020/02/11 Python
HR喜欢的自荐信格式
2013/10/08 职场文书
2014国培学习感言
2014/03/05 职场文书
产品开发计划书
2014/04/27 职场文书
2014年公务员工作总结
2014/11/18 职场文书
redis 查看所有的key方式
2021/05/07 Redis
Python道路车道线检测的实现
2021/06/27 Python
Java SSM配置文件案例详解
2021/08/30 Java/Android
苹果电脑mac os中货币符号快捷输入
2022/02/17 杂记