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将向Java靠拢
Oct 09 PHP
PHP 和 MySQL 基础教程(二)
Oct 09 PHP
对javascript和select部件的结合运用
Oct 09 PHP
mysql时区问题
Mar 26 PHP
PHP高级OOP技术演示
Aug 27 PHP
浅析关于PHP位运算的简单权限设计
Jun 30 PHP
PHP中spl_autoload_register函数的用法总结
Nov 07 PHP
实现在同一方法中获取当前方法中新赋值的session值解决方法
Jun 26 PHP
php实现购物车功能(下)
Jan 05 PHP
一段实用的php验证码函数
May 19 PHP
php使用curl实现ftp文件下载功能
May 16 PHP
Yii2 中实现单点登录的方法
Mar 09 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
颠覆常识!无色透明的咖啡诞生了(中日双语)
2021/03/03 咖啡文化
php+mysql实现用户注册登陆的方法
2015/01/03 PHP
PHP rsa加密解密使用方法
2015/04/27 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
2021/03/09 HTML / CSS
有关js的变量作用域和this指针的讨论
2010/12/16 Javascript
JavaScript中将一个值转换为字符串的方法分析[译]
2012/09/21 Javascript
终于解决了IE8不支持数组的indexOf方法
2013/04/03 Javascript
求数组最大最小值方法适用于任何数组
2013/08/16 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
jQuery实现渐变下拉菜单的简单方法
2015/03/11 Javascript
jquery实现焦点图片随机切换效果的方法
2015/03/12 Javascript
js设置document.domain实现跨域的注意点分析
2015/05/21 Javascript
Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
2016/05/23 Javascript
JS实现Ajax的方法分析
2016/12/20 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
AngularJS 实现购物车全选反选功能
2017/10/24 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
vue过滤器用法实例分析
2019/03/15 Javascript
JS桶排序的简单理解与实现方法示例
2019/11/25 Javascript
聊聊vue 中的v-on参数问题
2021/01/29 Vue.js
django+mysql的使用示例
2018/11/23 Python
Python字符串逆序的实现方法【一题多解】
2019/02/18 Python
Pyqt5实现英文学习词典
2019/06/24 Python
PyCharm中代码字体大小调整方法
2019/07/29 Python
Python 使用 prettytable 库打印表格美化输出功能
2019/12/26 Python
5个你不知道的HTML5的接口介绍
2013/08/07 HTML / CSS
韩国乐天网上商城:Lotte iMall
2021/02/03 全球购物
葡萄牙语专业个人求职信
2013/12/10 职场文书
施工安全责任书范本
2014/07/24 职场文书
幼儿园教师管理制度
2015/08/05 职场文书
2019最新婚庆对联集锦!
2019/07/10 职场文书
《家》读后感:万惜拯救,冷暖自知
2019/09/25 职场文书
如何使用php生成zip压缩包
2021/04/21 PHP
golang正则之命名分组方式
2021/04/25 Golang
threejs太阳光与阴影效果实例代码
2022/04/05 Javascript