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+mysql保存和输出文件
Oct 09 PHP
PHP mb_convert_encoding 获取字符串编码类型实现代码
Apr 26 PHP
apache+php完美解决301重定向的两种方法
Jun 08 PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
Mar 13 PHP
php中数字0和空值的区别分析
Jun 05 PHP
ThinkPHP3.2.2的插件控制器功能简述
Jul 09 PHP
yii数据库的查询方法
Dec 28 PHP
php字符集转换
Jan 23 PHP
PHP获取二叉树镜像的方法
Jan 17 PHP
用Laravel Sms实现laravel短信验证码的发送的实现
Nov 29 PHP
PHP安装memcache扩展的步骤讲解
Feb 14 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
May 23 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
虹吸式咖啡探讨–研磨
2021/03/03 冲泡冲煮
phpBB BBcode处理的漏洞
2006/10/09 PHP
php下统计用户在线时间的一种尝试
2010/08/26 PHP
php查找指定目录下指定大小文件的方法
2014/11/28 PHP
非常实用的PHP常用函数汇总
2014/12/17 PHP
php邮箱地址正则表达式验证
2015/11/13 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
jQuery中filter()和find()的区别深入了解
2013/09/25 Javascript
JavaScript语言对Unicode字符集的支持详解
2014/12/30 Javascript
基于Bootstrap实现tab标签切换效果
2020/04/15 Javascript
VUE 使用中踩过的坑
2018/02/08 Javascript
JavaScript去掉数组重复项的方法分析【测试可用】
2018/07/19 Javascript
vue 源码解析之虚拟Dom-render
2019/08/26 Javascript
vue实现移动端拖动排序
2020/08/21 Javascript
Vue双向数据绑定(MVVM)的原理
2020/10/03 Javascript
Python中os.path用法分析
2015/01/15 Python
python logging日志模块以及多进程日志详解
2018/04/18 Python
python自定义函数实现一个数的三次方计算方法
2019/01/20 Python
Python3使用TCP编写一个简易的文件下载器功能
2019/05/08 Python
Python中函数参数匹配模型详解
2019/06/09 Python
python实现按行分割文件
2019/07/22 Python
wxpython实现按钮切换界面的方法
2019/11/19 Python
Python读取csv文件实例解析
2019/12/30 Python
Python使用qrcode二维码库生成二维码方法详解
2020/02/17 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
墨西哥运动服饰和鞋网上商店:Netshoes墨西哥
2016/07/28 全球购物
制衣厂各岗位职责
2013/12/02 职场文书
学生党员思想汇报范文
2014/01/09 职场文书
放飞理想演讲稿
2014/09/09 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书
写作技巧:如何撰写商业计划书
2019/08/08 职场文书
JS Object构造函数之Object.freeze
2021/04/28 Javascript
el-table-column 内容不自动换行的解决方法
2022/08/14 Vue.js