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

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

大家好,又见面了,我是你们的朋友全栈君。

概述

使用PHP的array_unique()函数允许你传递一个数组,然后移除重复的值,返回一个拥有唯一值的数组。这个函数大多数情况下都能工作得很好。但是,如果你尝试在一个大的数组里使用array_unique()函数,它会运行地慢一些。

有一个比较好而且更快的函数array_flip()来替代使用array_unique()函数来创建唯一的数组。这个魔法般的函数会交换数组里面每一个元素的键和值,因为键值必须唯一,因此,你会得到跟array_unique()函数一样的结果。

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

因为我们已经移除了一些元素,因此数组看起来不是正常的序列。
1,使用array_merge修复数组的keys

$array = array('green','blue','orange','blue');
$array = array_flip($array);
$array = array_flip($array);
/* 使用array_merge()函数修复键值*/
$array = array_merge($array);
print_r($array)

2,使用array_keys

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

结论

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

在线去除重复项工具:
http://tools.jb51.net/code/quchong

在线文本去重复工具:
http://tools.jb51.net/aideddesign/txt_quchong

原文地址

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/105916.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • STM32CubeMX入门使用一

    STM32CubeMX入门使用一一、安装好CubeMX这个度娘中一大把。二、打开CubeMX软件—————-安装支持包和HAL库说明文档1、安装需要的芯片型号的package支持包2、找到下载的目录三、新建工程(以STM32F103ZET6为例)1、新建工程2、双击上图‘2’处就自动跳转到配置界面如下:3、先配置系统SystemCode中的RCC和SYS(特别提醒:SYS-Debug这个一定选上,否则下载程序后会禁用仿真下载口,后面就不能用这个口仿真下载

    2022年5月9日
    42
  • Druid连接池的意义以及使用

    Druid连接池的意义以及使用建立数据库连接耗时耗费资源,一个数据库服务器能够同时建立的连接数也是有限的,在大型的Web应用中,可能同时会有成百上千的访问数据库的请求,如果Web应用程序为每一个客户请求分配一个数据库连接,将导致性能的急剧下降。数据库连接池的意义在于,能够重复利用数据库连接(有点类似线程池的部分意义),提高对请求的响应时间和服务器的性能。连接池中提前预先建立了多个数据库连接对象,然后将连接对象保存到连接池中…

    2022年7月23日
    4
  • 如何查询手机当前基站编号信息呢_基站实测

    如何查询手机当前基站编号信息呢_基站实测Android:拨号*#*#4636#*#*进入手机信息工程模式后查看。iPhone:拨号*3001#12345#*进入FieldTest,LAC(MMInfo>ServingPLMN),3Gcellid(UMTSCellEnvironment>UMTSRRInfo),2Gcellid(GSMCellEnvironment>GSMCellInfo>

    2025年7月5日
    1
  • python发送soap报文_python处理SOAP API

    python发送soap报文_python处理SOAP API我们常见的API一般是restful,但是有的时候也会遇到非restful的时候,对于RestfulAPI,我们很容易用python处理。SOAPAPI我们如何来处理呢?首先我们需要了解RestfulAPI和SOAPAPI架构TheRepresentationalStateTransfer(REST)架构服务通过统一资源定位器(URL)公开。这个逻辑名称将资源的标识与所接…

    2022年7月13日
    20
  • OHEM算法论文理解

    OHEM算法论文理解OHEM层

    2022年5月7日
    36
  • java程序日志管理

    java程序日志管理初入软件开发这一行的人,可能对日志管理的概念并不是很明确,大概是由于经验所限,以至于根本还考虑不到这个问题。而从某种意义上来说,日志管理实际上也不需要初入这一行的人来管,他们只需要负责实现自己的主要业务逻辑和功能就好了。我当初刚入行的时候就有很长一段时间完全不用去关心日志,到后来偶尔涉及到的时候,也都是从其他地方采用cv大法直接搬用。不过,随着工作时间的变化,随着手头上任务重要程度的变化

    2022年6月10日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号