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 相关文章推荐
基于mysql的论坛(2)
Oct 09 PHP
用PHP实现递归循环每一个目录
Aug 08 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
Jun 24 PHP
解析php 版获取重定向后的地址(代码)
Jun 26 PHP
php生成excel列序号代码实例
Dec 24 PHP
浅析ThinkPHP中的pathinfo模式和URL重写
Jan 06 PHP
codeigniter框架The URI you submitted has disallowed characters错误解决方法
May 06 PHP
Yii配置文件用法详解
Dec 04 PHP
php实现的数字验证码及数字运算验证码
Jul 30 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
May 08 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
Oct 11 PHP
php生成word并下载代码实例
Mar 15 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
数字转英文
2006/12/06 PHP
PHP 网络开发详解之远程文件包含漏洞
2010/04/25 PHP
利用Memcached在php下实现session机制 替换PHP的原生session支持
2010/08/21 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
PHP cURL初始化和执行方法入门级代码
2015/05/28 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
swoole锁的机制代码实例讲解
2021/03/04 PHP
js模拟弹出效果代码修正版
2008/08/07 Javascript
jquery判断浏览器类型的代码
2012/11/05 Javascript
通过伪协议解决父页面与iframe页面通信的问题
2015/04/05 Javascript
jQuery垂直多级导航菜单代码分享
2015/08/18 Javascript
vuejs动态组件给子组件传递数据的方法详解
2016/09/09 Javascript
js实现tab选项卡切换功能
2017/01/13 Javascript
jQuery实现移动端Tab选项卡效果
2017/03/15 Javascript
深入理解AngularJS中的ng-bind-html指令
2017/03/27 Javascript
gulp解决跨域的配置文件问题
2017/06/08 Javascript
JS模拟浏览器实现全局搜索功能
2019/09/11 Javascript
layui 地区三级联动 form select 渲染的实例
2019/09/27 Javascript
js实现无缝轮播图效果
2020/03/09 Javascript
Node.js 中如何收集和解析命令行参数
2021/01/08 Javascript
[01:43]3.19DOTA2发布会 三代刀塔人第三代
2014/03/25 DOTA
安装好Pycharm后如何配置Python解释器简易教程
2019/06/28 Python
深入理解HTML的FormData对象
2016/05/17 HTML / CSS
HTML5实现桌面通知 提示功能
2017/10/11 HTML / CSS
The North Face北面法国官网:美国著名户外品牌
2019/11/01 全球购物
数据库设计的包括哪两种,请分别进行说明
2016/07/15 面试题
ddl,dml和dcl的含义
2016/05/08 面试题
GC是什么?为什么要有GC?
2013/12/08 面试题
光荣入党自我鉴定
2014/01/22 职场文书
中专生毕业个人鉴定
2014/02/26 职场文书
经典英文广告词
2014/03/18 职场文书
学术诚信承诺书
2014/05/26 职场文书
管理提升方案
2014/06/04 职场文书
2014年司法局工作总结
2014/12/11 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书
一劳永逸彻底解决pip install慢的办法
2021/05/24 Python