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 相关文章推荐
在PHP3中实现SESSION的功能(一)
Oct 09 PHP
PHP 数组遍历方法大全(foreach,list,each)
Jun 30 PHP
利用PHP实现智能文件类型检测的实现代码
Aug 02 PHP
Array of country list in PHP with Zend Framework
Oct 17 PHP
php中防止恶意刷新页面的代码小结
Oct 31 PHP
php中将html中的br换行符转换为文本输入中的换行符
Mar 26 PHP
destoon供应信息title调用出公司名称的方法
Aug 22 PHP
PHP统一页面编码避免乱码问题
Apr 09 PHP
php开发工具有哪五款
Nov 09 PHP
PHP简单获取多个checkbox值的方法
Jun 13 PHP
php新建文件的方法实例
Sep 26 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
Jun 06 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
虫族 Zerg 热键控制
2020/03/14 星际争霸
PHP 存储文本换行实现方法
2010/01/05 PHP
php判断上传的Excel文件中是否有图片及PHPExcel库认识
2013/01/11 PHP
PHP使用SOAP调用.net的WebService数据
2013/11/12 PHP
php生成shtml类用法实例
2014/12/09 PHP
PHP实现PDO的mysql数据库操作类
2014/12/12 PHP
PHP防止图片盗用(盗链)的方法小结
2016/11/11 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
2017/04/09 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
2020/01/23 PHP
音乐播放用的的几个函数
2006/09/07 Javascript
JQuery 操作Javascript对象和数组的工具函数小结
2010/01/22 Javascript
js使用eval解析json实例与注意事项分享
2014/01/18 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
2015/07/17 Javascript
jquery验证邮箱格式是否正确实例讲解
2015/11/16 Javascript
基于javascript如何传递特殊字符
2015/11/30 Javascript
Bootstrap源码解读排版(1)
2016/12/23 Javascript
nodejs构建本地web测试服务器 如何解决访问静态资源问题
2017/07/14 NodeJs
详解JavaScript作用域 闭包
2020/07/29 Javascript
Python中用altzone()方法处理时区的教程
2015/05/22 Python
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
使用python实现ANN
2017/12/20 Python
python 获取当天凌晨零点的时间戳方法
2018/05/22 Python
python实现textrank关键词提取
2018/06/22 Python
python输入整条数据分割存入数组的方法
2018/11/13 Python
英国最红的高街时尚品牌:Topshop
2016/08/05 全球购物
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
外企C语言笔试题
2013/11/10 面试题
教师年终个人自我评价
2013/10/04 职场文书
酒店办公室文员岗位职责
2013/12/18 职场文书
九年级体育教学反思
2014/01/23 职场文书
员工试用期转正自我评价
2015/03/10 职场文书
公证书
2019/04/17 职场文书
pycharm 如何查看某一函数源码的快捷键
2021/05/12 Python
java多态注意项小结
2021/10/16 Java/Android
vue ref如何获取子组件属性值
2022/03/31 Vue.js