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 file_exists 检查文件或目录是否存在的函数
May 10 PHP
解析在apache里面给php写虚拟目录的详细方法
Jun 24 PHP
php环境无法上传文件的解决方法
Apr 30 PHP
php通过strpos查找字符串出现位置的方法
Mar 17 PHP
php检查日期函数checkdate用法实例
Mar 19 PHP
PHP面向对象之后期静态绑定功能介绍
May 18 PHP
深入解析PHP的Laravel框架中的event事件操作
Mar 21 PHP
深入剖析PHP中printf()函数格式化使用
May 23 PHP
Thinkphp微信公众号支付接口
Aug 04 PHP
Yii2选项卡的简单使用
May 26 PHP
在Laravel5中正确设置文件权限的方法
May 22 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
Dec 20 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的FTP学习(三)
2006/10/09 PHP
PHP实现用户认证及管理完全源码
2007/03/11 PHP
深入php数据采集的详解
2013/06/02 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
ThinkPHP3.2.2的插件控制器功能
2015/03/05 PHP
举例详解PHP脚本的测试方法
2015/08/05 PHP
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
MooTools 1.2中的Drag.Move来实现拖放
2009/09/15 Javascript
JS实现图片无间断滚动代码汇总
2014/07/30 Javascript
js图片实时加载提供网页打开速度
2014/09/11 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
谷歌Chrome浏览器扩展程序开发小记
2016/01/06 Javascript
javascript html5移动端轻松实现文件上传
2020/03/27 Javascript
再谈Javascript中的异步以及如何异步
2016/08/19 Javascript
JS敏感词过滤代码
2016/12/23 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
2017/01/30 Javascript
JS模拟实现哈希表及应用详解
2018/05/04 Javascript
微信小程序input框中加入小图标的实现方法
2018/06/19 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
在vue和element-ui的table中实现分页复选功能
2019/12/04 Javascript
解决vue net :ERR_CONNECTION_REFUSED报错问题
2020/08/13 Javascript
[04:27]DOTA2官方论坛水友赛集锦
2013/09/16 DOTA
Python中的with语句与上下文管理器学习总结
2016/06/28 Python
使用Python自动生成HTML的方法示例
2019/08/06 Python
python实现通过flask和前端进行数据收发
2019/08/22 Python
Python线程条件变量Condition原理解析
2020/01/20 Python
详解python算法常用技巧与内置库
2020/10/17 Python
css3利用transform变形结合事件完成扇形导航
2020/10/26 HTML / CSS
什么情况下你必须要把一个类定义为abstract的
2013/01/06 面试题
《桃林那间小木屋》教学反思
2014/05/01 职场文书
省级青年文明号申报材料
2014/05/23 职场文书
民政局副局长民主生活会个人整改措施
2014/10/04 职场文书
八月迷情观后感
2015/06/11 职场文书
中国式结婚:司仪主持词(范文)
2019/07/25 职场文书
导游词之藏龙百瀑景区
2019/12/30 职场文书