更快的方式实现PHP数组去重

1 /* 创建一个包含重复值的,一共四个元素的数组 */
2 $array = array('green','blue','orange','blue');
3
4 /* 翻转数组,你将会得到唯一键值的数组
5         array('green'=>0,'blue'=>1,'orange'=>2); */
6 $array = array_flip($array);
7
8 /* 然后再翻转一次,将键和值重新放置,然后得到数组:array(0=>'green',1=>'blue',2=>'orange'); */
9 $array = array_flip($array);

因为我们已经移除了一些元素,因此数组看起来不是正常的序列。比如我们可能会得到:array(0=>’A’,2=>’B’,5=>’C’);。在某些情况下,这不是一个问题,但是如果你需要数组的键值保持数字的序列,你可以使用一到两种方法解决键值乱序的问题。

使用array_merge修复数组的keys

添加array_flip之后的函数,将会对数组的键值排序并且让它们恢复到正常的序列,如:0,1,2,3…

1 $array = array('green','blue','orange','blue');
2 $array = array_flip($array);
3 $array = array_flip($array);
4
5 /* 使用array_merge()函数修复键值*/
6 $array = array_merge($array);

第二种方式,使用array_keys

注意,这种修复数组键值的方法比使用array_merge()函数稍微快了一点。你也可以在最后一步结合使用array_keys()函数(此函数返回翻转后的值)。然后当你翻转数组的值,键值就会根据顺序创建。

1 $array = array('green','blue','orange','blue');
2 $array = array_flip($array);
3 /* 跟第一个例子一样,但是现在我们先提取数组的键值 */
4 $array = array_keys($array);

结论

非常简单,比起在大数组使用array_unique函数,有了一个有效的性能提升。

查看PHP的源码,可以发现,在array_unique函数的实现中,有排序的操作,所以array_unique用的时间比较长。

转载请标明来处:https://blog.csdn.net/TiaoZhanJi_Xian/article/details/80752295

请尊重经验,别只会照搬,谢谢,如有问题,可咨询QQ:977798066,乐意为你解答

php去重后重新排键值相关推荐

  1. mybatis中useGeneratedKeys用法--插入数据库后获取主键值

    前言:今天无意在mapper文件中看到useGeneratedKeys这个词,好奇就查了下,发现能解决我之前插入有外键表数据时,这个外键获取繁琐的问题,于是学习敲DEMO记录    在项目中经常需要获 ...

  2. mybatis mysql usegeneratedkeys_mybatis中useGeneratedKeys用法--插入数据库后获取主键值

    前言:今天无意在mapper文件中看到useGeneratedKeys这个词,好奇就查了下,发现能解决我之前插入有外键表数据时,这个外键获取繁琐的问题,于是学习敲DEMO记录 在项目中经常需要获取到插 ...

  3. 数组中的键值对去重_javascript利用对象键值对中键的唯一性实现数组去重

    /p> "http://www.w3.org/TR/html4/loose.dtd"> var arr = [1,2,3,2,3,4,5,6,7,8,9,8,5]; / ...

  4. mybatis新增返回主键值

    mapper <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC ...

  5. 隐藏受保护的系统文件的注册表键值

    前几天自己笔记本中毒,受保护的隐藏文件一直会显示出来,很烦人,在网上找到了它的键值 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersio ...

  6. 3、JavaWeb中Service层的作用、MyBatis的重要组件、mybatis-config.xml中的别名映射、properties配置、#{}和${}的区别、获取插入数据的主键值

    文章目录 1.Service层的作用 2.MyBatis重要组件 Resources SqlSessionFactoryBuilder SqlSessionFactory SqlSession 针对上 ...

  7. java数据存储常用数据结构的实现:栈(先进后出),队(先进先出),字典(键值对),集合(去重)

    对于变得强大,首先你能尽量做的,就是接受弱小的事实. 大部分情况下,我们在从输入流中读出数据的时候,不会对数据进行分析,不会想究竟用什么数据结构存储它比较好.一拍脑袋都怼进了数组里面,然后根据题意去一 ...

  8. js 去重某个键值 数组对象_JS数组去重常见方法分析

    数组去重是开发中经常会遇到的问题,也是面试时经常会考到的.JS实现数组去重可以有多种方法: 一.简单的去重方法 用一个类比来简单解释一下这种去重方法的思路:A篮子里有若干个不同颜色和大小的球,旁边放一 ...

  9. 快排算法的针对重复键值的优化

    上一节讲了快排算法在序列基本有序的情况下的两种优化方法,这一节我们对新的测试用例进行测试,测试用例如下所示: int main() {//测试 - 待排序列的重复值很多int n = 400000;i ...

最新文章

  1. 条形码?二维码?生成、解析都在这里!
  2. 知识点回顾-简单的TableView单组数据展示/多组数据展示
  3. 京东云擎提供了免费的wordpress一键安装功能了
  4. django-websocket 安装及配置
  5. Redis服务器被劫持风波
  6. 【二分法】计蒜客:气球消消乐
  7. 三维重建-立体校正(Recitification)
  8. winfrom软件开发汽车测试_从事汽车电子软件开发岗,我们最近还没那么愁
  9. 1091 Acute Stroke (30 分)广度优先搜索,用queue,重写一遍
  10. Rhino(Grasshopper)+PaddleX快速建模
  11. 智能聊天对话机器人的对比
  12. Win10共享文件时提示需要输入网络凭据怎么办?
  13. LCM液晶显示模组是什么,液晶显示模块有几种类型呢
  14. 云端敏捷部署单节点MySQl与Redis服务(以Ubuntu为例)
  15. 栈迁移过程记录,栈指针rsp、rbp、rip、leave变化过程
  16. 北漂12年,洋哥为什么这么重视认知?
  17. 弘辽科技:丁真一夜爆红背后的直播发展趋势
  18. selenium豆瓣登陆
  19. 数学物理方法·基础⑦基本初等复变函数的计算公式/方法
  20. USB转TTL给ESP8266-12F芯片下载程序

热门文章

  1. 什么是跨域问题,跨域问题如何解决
  2. 路飞学城python开发入门学习
  3. 灵活分控、尽在掌控,同为(TOWE)四合一防雷防浪涌桌面PDU
  4. GPT-4正式发布!ChatGPT大升级!太强了!
  5. 修改Android app名字(Android Studio)
  6. MySQL - MySQL查询语句的执行过程
  7. 张萌韩墨羽——BroadCast 广播
  8. android intent { (has extras) },android – 活动开始时缺少Intent extras
  9. 传统建站与响应式建站的区别是什么?
  10. Android底层开发工作小结