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中取得image按钮传递的name值
Oct 09 PHP
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
Aug 19 PHP
php知道与问问的采集插件代码
Oct 12 PHP
一篇有意思的技术文章php介绍篇
Oct 26 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
Jun 20 PHP
关于php内存不够用的快速解决方法
Oct 26 PHP
php使用curl和正则表达式抓取网页数据示例
Apr 13 PHP
PHP使用in_array函数检查数组中是否存在某个值
Mar 25 PHP
Yii中的relations数据关联查询及统计功能用法详解
Jul 14 PHP
PHP设计模式之工厂模式定义与用法详解
Apr 03 PHP
在Laravel5.6中使用Swoole的协程数据库查询
Jun 15 PHP
详解PHP素材图片上传、下载功能
Apr 12 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
多人战的战术与战略
2020/03/04 星际争霸
PHP利用COM对象访问SQLServer、Access
2006/10/09 PHP
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
2011/10/31 PHP
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
php通过function_exists检测函数是否存在的方法
2015/03/18 PHP
PHP响应post请求上传文件的方法
2015/12/17 PHP
javascript delete 使用示例代码
2010/03/29 Javascript
functional继承模式 摘自javascript:the good parts
2011/06/20 Javascript
常用一些Javascript判断函数
2012/08/14 Javascript
jquery内置验证(validate)使用方法示例(表单验证)
2013/12/04 Javascript
BootStrap的table表头固定tbody滚动的实例代码
2016/08/24 Javascript
使用jquery实现的循环连续可停顿滚动实例
2016/11/23 Javascript
JS实现商城秒杀倒计时功能(动态设置秒杀时间)
2019/12/12 Javascript
微信小程序实现弹框效果
2020/05/26 Javascript
vuex管理状态仓库使用详解
2020/07/29 Javascript
python使用clear方法清除字典内全部数据实例
2015/07/11 Python
使用python实现个性化词云的方法
2017/06/16 Python
python简易远程控制单线程版
2018/06/20 Python
selenium+python自动化测试之鼠标和键盘事件
2019/01/23 Python
python 申请内存空间,用于创建多维数组的实例
2019/12/02 Python
Pygame框架实现飞机大战
2020/08/07 Python
python调用有道智云API实现文件批量翻译
2020/10/10 Python
Python读取pdf表格写入excel的方法
2021/01/22 Python
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
澳大利亚墨水站Ink Station:墨水和碳粉打印机墨盒
2019/03/24 全球购物
泰国的头号网上婴儿用品店:Motherhood.co.th
2019/04/09 全球购物
美国户外服装和装备购物网站:Outland USA
2020/03/22 全球购物
如何整合JQuery和Prototype
2014/01/31 面试题
自我评价中英文语句
2013/11/30 职场文书
物流仓管员工作职责
2014/01/06 职场文书
增员口号大全
2014/06/18 职场文书
群众路线专项整治工作情况报告
2014/10/28 职场文书
带你彻底理解JavaScript中的原型对象
2021/04/14 Javascript
Python爬虫 简单介绍一下Xpath及使用
2022/04/26 Python
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript