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 相关文章推荐
web方式ftp
Oct 09 PHP
使用 MySQL 开始 PHP 会话
Dec 21 PHP
PHP对字符串的递增运算分析
Aug 08 PHP
windows下开发并编译PHP扩展的方法
Mar 18 PHP
php数组删除元素示例
Mar 21 PHP
PHP检测移动设备类mobile detection使用实例
Apr 14 PHP
thinkphp使用literal防止模板标签被解析的方法
Nov 22 PHP
PHP使用flock实现文件加锁的方法
Jul 01 PHP
php 防止表单重复提交两种实现方法
Nov 03 PHP
PHP实现腾讯与百度坐标转换
Aug 05 PHP
基于PHP实现栈数据结构和括号匹配算法示例
Aug 10 PHP
php中字符串和整数比较的操作方法
Jun 06 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滚动日志的代码实现
2015/06/10 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
2016/01/03 PHP
你需要知道的10个最佳javascript开发实践小结
2012/04/15 Javascript
js动态创建、删除表格示例代码
2013/08/07 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
NodeJS中Buffer模块详解
2015/01/07 NodeJs
浅谈使用MVC模式进行JavaScript程序开发
2015/11/10 Javascript
全面解析Bootstrap排版使用方法(标题)
2015/11/30 Javascript
jQuery+css实现炫目的动态块漂移效果
2016/01/28 Javascript
JavaScript简单实现鼠标移动切换图片的方法
2016/02/23 Javascript
js实现纯前端的图片预览
2016/04/27 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
JavaScript禁止用户多次提交的两种方法
2016/07/24 Javascript
原生JS下拉加载插件分享
2016/12/26 Javascript
Bootstarp 基础教程之表单部分实例代码
2017/02/03 Javascript
ReactNative列表ListView的用法
2017/08/02 Javascript
vue mint-ui 实现省市区街道4级联动示例(仿淘宝京东收货地址4级联动)
2017/10/16 Javascript
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
详解vue-cli官方脚手架配置
2018/07/20 Javascript
layer页面跳转,获取html子节点元素的值方法
2019/09/27 Javascript
js生成1到100的随机数最简单的实现方法
2020/02/07 Javascript
extjs图表绘制之条形图实现方法分析
2020/03/06 Javascript
JavaScript实现轮播图特效
2020/04/10 Javascript
微信小程序国际化探索实现(附源码地址)
2020/05/20 Javascript
python简单实现获取当前时间
2016/08/27 Python
CSS Grid布局教程之什么是网格布局
2014/12/30 HTML / CSS
canvas绘制圆角头像的实现方法
2019/01/17 HTML / CSS
阿玛尼美妆加拿大官方商城:Giorgio Armani Beauty加拿大
2017/10/24 全球购物
皇家阿尔伯特英国官方商店:Royal Albert骨瓷
2019/03/25 全球购物
幼儿园亲子活动总结
2014/04/26 职场文书
优秀大学生自荐信
2014/06/09 职场文书
甜品蛋糕店创业计划书
2014/09/21 职场文书
2015年毕业生自荐信范文
2015/03/24 职场文书
法律服务所工作总结
2015/08/10 职场文书
死磕 java同步系列之synchronized解析
2021/06/28 Java/Android
纯html+css实现Element loading效果
2021/08/02 HTML / CSS