PHP基于array_unique实现二维数组去重


Posted in PHP onJuly 14, 2020

array_unique函数就是可以处重的,它具备了这个功能了,下面我们一来看一个关于PHP使用array_unique对二维数组去重处理例子。

php 5.2.9 版本增加了array_unique对多维数组的支持,在处理多维数组是需要设置sort_flags参数

一维数组的重复项:

使用array_unique函数即可,使用实例如下:

代码如下

<?php
$aa = array("apple", "banana", "pear", "apple", "wail", "watermalon");
$bb = array_unique($aa);
print_r($bb);
?>

结果如下:

Array ( [0] => apple [1] => banana [2] => pear [4] => wail [5] => watermalon )

二维数组去重项

代码如下

例如:

$result = array(
0=>array('a'=>1,'b'=>'Hello'),
1=>array('a'=>1,'b'=>'other'),
2=>array('a'=>1,'b'=>'other'),
);

处理成

$result = array(
0=>array('a'=>1,'b'=>'Hello'),
1=>array('a'=>1,'b'=>'other')
);

使用方法

array_unique($result, SORT_REGULAR);

二维数组的重复项:

对于二维数组咱们分两种情况讨论,一种是因为某一键名的值不能重复,删除重复项;另一种因为内部的一维数组不能完全相同,而删除重复项,下面举例说明:

㈠因为某一键名的值不能重复,删除重复项

PHP代码如下

<?php

function assoc_unique($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]);
    } else {
      $tmp_arr[] = $v[$key];
    }
  }
  sort($arr); //sort函数对数组进行排序
  return $arr;
}

$aa = array(
  array('id' => 123, 'name' => '张三'),
  array('id' => 123, 'name' => '李四'),
  array('id' => 124, 'name' => '王五'),
  array('id' => 125, 'name' => '赵六'),
  array('id' => 126, 'name' => '赵六')
);
$key = 'id';
assoc_unique(&$aa, $key);
print_r($aa);
?>

显示结果为:

Array ( [0] => Array ( [id] => 123 [name] => 张三 ) [1] => Array ( [id] => 124 [name] => 王五 ) [2] => Array ( [id] => 125 [name] => 赵六 ) [3] => Array ( [id] => 126 [name] => 赵六 ) )

因内部的一维数组不能完全相同,而删除重复项

代码如下

<?php

function array_unique_fb($array2D) {
  foreach ($array2D as $v) {
    $v = join(",", $v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
    $temp[] = $v;
  }
  $temp = array_unique($temp);//去掉重复的字符串,也就是重复的一维数组
  foreach ($temp as $k => $v) {
    $temp[$k] = explode(",", $v);//再将拆开的数组重新组装
  }
  return $temp;
}
$aa = array(
  array('id' => 123, 'name' => '张三'),
  array('id' => 123, 'name' => '李四'),
  array('id' => 124, 'name' => '王五'),
  array('id' => 123, 'name' => '李四'),
  array('id' => 126, 'name' => '赵六')
);
$bb = array_unique_fb($aa);
print_r($bb)
?>

显示结果:

Array ( [0] => Array ( [0] => 123 [1] => 张三 ) [1] => Array ( [0] => 123 [1] => 李四 ) [2] => Array ( [0] => 124 [1] => 王五 ) [4] => Array ( [0] => 126 [1] => 赵六 ) )

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
一个php作的文本留言本的例子(五)
Oct 09 PHP
ThinkPHP3.1新特性之多层MVC的支持
Jun 19 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
Dec 16 PHP
php解析http获取的json字符串变量总是空白null
Mar 02 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
May 13 PHP
thinkphp制作404跳转页的简单实现方法
Sep 22 PHP
php版微信公众平台开发之验证步骤实例详解
Sep 23 PHP
php写app接口并返回json数据的实例(分享)
May 20 PHP
基于Laravel实现的用户动态模块开发
Sep 21 PHP
Laravel框架生命周期与原理分析
Jun 12 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
Jun 05 PHP
php利用array_search与array_column实现二维数组查找
Jul 08 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
Jul 13 #PHP
通过实例解析PHP数据类型转换方法
Jul 11 #PHP
PHP var关键字相关原理及使用实例解析
Jul 11 #PHP
PHP手机号码及邮箱正则表达式实例解析
Jul 11 #PHP
基于PHP实现短信验证码发送次数限制
Jul 11 #PHP
PHP连接MySQL数据库操作代码实例解析
Jul 11 #PHP
PHP如何使用cURL实现Get和Post请求
Jul 11 #PHP
You might like
php数组一对一替换实现代码
2012/08/31 PHP
10个超级有用的PHP代码片段果断收藏
2015/09/23 PHP
PHP执行linux命令常用函数汇总
2016/02/02 PHP
thinkPHP模板中for循环与switch语句用法示例
2016/11/30 PHP
PHP如何实现订单的延时处理详解
2017/12/30 PHP
javascript 多级checkbox选择效果
2009/08/20 Javascript
IE event.srcElement和FF event.target 功能比较
2010/03/01 Javascript
javascript 学习笔记(一)DOM基本操作
2011/04/08 Javascript
JavaScript基本编码模式小结
2012/05/23 Javascript
js中prototype用法详细介绍
2013/11/14 Javascript
js简单实现删除记录时的提示效果
2013/12/05 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
2015/06/23 Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
2015/09/09 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
2016/01/18 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】
2017/03/09 Javascript
10 种最常见的 Javascript 错误(频率最高)
2018/02/08 Javascript
JS随机数产生代码分享
2018/02/24 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
node中使用es6/7/8(支持性与性能)
2019/03/28 Javascript
利用Python画ROC曲线和AUC值计算
2016/09/19 Python
利用Anaconda完美解决Python 2与python 3的共存问题
2017/05/25 Python
基于循环神经网络(RNN)实现影评情感分类
2018/03/26 Python
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
自学python的建议和周期预算
2019/01/30 Python
python itsdangerous模块的具体使用方法
2020/02/17 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
2020/03/09 Python
Windows 下python3.8环境安装教程图文详解
2020/03/11 Python
matplotlib教程——强大的python作图工具库
2020/10/15 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
2021/03/01 Python
加拿大领先的冒险和户外零售商:Atmosphere
2017/12/19 全球购物
电子信息专业应届生自荐信
2014/06/04 职场文书
音乐节策划方案
2014/06/09 职场文书
退学证明范本3篇
2014/10/29 职场文书
一年级语文教学随笔
2015/08/14 职场文书
MySQL 逻辑备份与恢复测试的相关总结
2021/05/14 MySQL