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 相关文章推荐
中英文字符串翻转函数
Dec 09 PHP
php 获得汉字拼音首字母的函数
Aug 01 PHP
php下使用SimpleXML 处理XML 文件
Feb 27 PHP
PHP中PDO的错误处理
Sep 04 PHP
使用HMAC-SHA1签名方法详解
Jun 26 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
Jun 19 PHP
PHP图片库imagemagick安装方法
Sep 23 PHP
ThinkPHP采用原生query实现关联查询left join实例
Dec 02 PHP
java模拟PHP的pack和unpack类
Apr 13 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
Jul 01 PHP
Yii统计不同类型邮箱数量的方法
Oct 18 PHP
PHP+JQUERY操作JSON实例
Mar 23 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小马小结(方便查找后门的朋友)
2012/05/05 PHP
PHP内核探索:变量存储与类型使用说明
2014/01/30 PHP
PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
2014/11/19 PHP
php实现的单一入口应用程序实例分析
2015/09/23 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
2019/07/03 PHP
createElement与createDocumentFragment的点点区别小结
2011/12/19 Javascript
js返回上一页并刷新代码整理
2012/12/21 Javascript
jquery移除button的inline onclick事件(已测试及兼容浏览器)
2013/01/25 Javascript
JQuery 图片的展开和伸缩实例讲解
2013/04/18 Javascript
JavaScript关闭当前页面(窗口)不带任何提示
2014/03/26 Javascript
jQuery超简单选项卡完整实例
2015/09/26 Javascript
BootStrap框架个人总结(bootstrap框架、导航条、下拉菜单、轮播广告carousel、栅格系统布局、标签页tabs、模态框、菜单定位)
2016/12/01 Javascript
Javascript实现时间倒计时效果
2017/07/15 Javascript
微信小程序实现收藏与取消收藏切换图片功能
2018/08/03 Javascript
python实现迭代法求方程组的根过程解析
2019/11/25 Javascript
javascript实现左右缓动动画函数
2020/11/25 Javascript
Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
2017/07/27 Python
python2.7+selenium2实现淘宝滑块自动认证功能
2018/02/24 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
2018/12/17 Python
Python实现爬取马云的微博功能示例
2019/02/16 Python
Python Datetime模块和Calendar模块用法实例分析
2019/04/15 Python
pybind11和numpy进行交互的方法
2019/07/04 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
Python实现RabbitMQ6种消息模型的示例代码
2020/03/30 Python
Python如何实现自带HTTP文件传输服务
2020/07/08 Python
戴尔加拿大官网:Dell加拿大
2016/09/17 全球购物
Spartoo比利时:欧洲时尚购物网站
2017/12/06 全球购物
Python如何定义一个函数
2015/09/01 面试题
新闻专业大学生找工作的自我评价
2013/10/30 职场文书
卫生系统先进事迹
2014/05/13 职场文书
事业单位财务人员岗位职责
2015/04/14 职场文书
关于开学的感想
2015/08/10 职场文书
html css3不拉伸图片显示效果
2021/06/07 HTML / CSS
Python可变集合和不可变集合的构造方法大全
2021/12/06 Python
Python中request的基本使用解决乱码问题
2022/04/12 Python