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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ie浏览器无法连接到代理服务器_网页无法连接到代理服务器

    ie浏览器无法连接到代理服务器_网页无法连接到代理服务器由于工作上的需要,相信很多用户会使用IE代理服务器,但是在设置之后遇到IE代理服务器没有响应错误提示(如图所示),并且浏览器无法打开网页的问题,但使用其他浏览器是可以正常上网,出现这种情况很有可能是注册表设置问题,我们可以按照以下方式来解决。     1、打开运行窗口(系统键Win+R),输入”regedit.exe”.如下图所示,根据下边的地址逐步打开:HKE

    2022年10月23日
  • adb出现adb server is out of date时的解决的方法

    adb出现adb server is out of date时的解决的方法

    2021年11月29日
  • 2k21本世代和次世代生涯一样吗_nba2k21次世代价格

    2k21本世代和次世代生涯一样吗_nba2k21次世代价格原题链接对于在中国大学MOOC(http://www.icourse163.org/ )学习“数据结构”课程的学生,想要获得一张合格证书,总评成绩必须达到 60 分及以上,并且有另加福利:总评分在 [G, 100] 区间内者,可以得到 50 元 PAT 代金券;在 [60, G) 区间内者,可以得到 20 元PAT代金券。全国考点通用,一年有效。同时任课老师还会把总评成绩前 K 名的学生列入课程“名人堂”。本题就请你编写程序,帮助老师列出名人堂的学生,并统计一共发出了面值多少元的 PAT 代金券。输入格

    2022年8月8日
  • C语言学习——结构体_联合体_枚举用法直通[通俗易懂]

    C语言学习——结构体_联合体_枚举用法直通[通俗易懂]一、结构体嵌套#include <stdio.h>// 出生日期:年月日struct sBirthday{ int iYear; int iMonth; int iDay;};// 公民信息struct sSCitizenIDInfo{ char cName[10]; char cSex[4]; sBirthday BirthDate; // 结构体变量…

    2022年8月18日
  • Android布局优化之ViewStub、include、merge使用与源码分析

    Android布局优化之ViewStub、include、merge使用与源码分析在开发中UI布局是我们都会遇到的问题,随着UI越来越多,布局的重复性、复杂度也会随之增长。首先用得最多的应该是include,按照官方的意思,include就是为了解决重复定义相同布局的

    2022年6月28日
  • stm32 st_基于STM32

    stm32 st_基于STM32用了不少芯片,就只有51有位操作,这个特性很喜欢,赋值简单、效率又高且节省内存,不必为了一个bool去分配一个uint8.发现stm32有Bit-Banding,就试了一下,用MDK-ARM环境下的汇编代码做了一些比较。操作,清零USART1的SR寄存器的TC位:方法一://利用USART_TypeDef这个结构寻到SR的地址,再赋值USART1->SR&amp…

    2022年10月13日

发表回复

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

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