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


相关推荐

  • 史上最全安装Maven教程「建议收藏」

    史上最全安装Maven教程「建议收藏」史上最全安装Maven教程简单了解一下什么是Maven1.Maven翻译为“专家“,”内行”的意思,是著名Apache公司下基于Java开发的开源项目。2.Maven项目对象模型(POM)是一个项目管理工具软件,可以通过简短的中央信息描述来管理项目的搭建,报告和文档等步骤。3.Maven是一个项目管理的工具,可以对项目进行构建、依赖的管理。PS:(Gradle的项目搭建方式,将在不久的未来取代Maven,大势所趋。原因如何?小Du下期为您揭晓)一.官网下载下载官网→_→传送门二.配

    2022年6月4日
    32
  • 超链接样式设置「建议收藏」

    超链接样式设置「建议收藏」顺序不能颠倒,按如下设置:a:link{ color:red;}a:visited{ color:green;}a:hover{ color:black;}a:active{ color:blue;}

    2022年7月19日
    16
  • poe交换机和接入交换机的区别_光纤交换机和普通交换机的区别

    poe交换机和接入交换机的区别_光纤交换机和普通交换机的区别POE交换机与普通交换机区别的话,POE交换机就是除了能提供普通交换机所具有的传输功能,还能给网线的另一端设备提供供电功能。普通的交换机主要是交换数据的功能,并没有具备供电的功能。接下来我们就一起来详细看看POE交换机和普通交换机的区别具体有哪些?POE交换机和普通交换机具有以下几点区别:1.可靠性不同:POE交换机就是支持对网线供电的交换机,和普通交换机相比就是受电终端(比如AP、数字摄像头等)不用再进行电源布线,对整个网络而言可靠性更高。2.功能不同:POE交换机就是除了能提供普通交换机所

    2022年10月5日
    4
  • java jwt 单点登录_jwt技术实现系统间的单点登录「建议收藏」

    java jwt 单点登录_jwt技术实现系统间的单点登录「建议收藏」阅读文本大概需要3分钟。单点登录(singlesignon),简称sso。它的定义是多个应用系统间,只需要登录一次就可以访问所有相互信任的应用系统。下面介绍用jwt技术如何来实现单点登录。一、JWT定义及其组成JWT(JSONWEBTOKEN)是一个非常轻巧的规范,这个规范允许我们使用jwt在客户端和服务器之间传递安全可靠的信息。JWT由3个部分组成,分别是头部、载荷、签名。头部部分{“a…

    2022年5月11日
    44
  • android的layout_android:layout_weight

    android的layout_android:layout_weight一、前期基础知识储备首先看几个使用LayoutParams的实例:1、《Android开发艺术探索》第8章,Java代码中动态设置按钮时通过LayoutParams参数设置按钮位置x、y参数及Gravity位置信息,从而动态的添加进一个随手势移动的按钮,类似于悬浮窗效果。publicvoidonButtonClick(Viewview){if…

    2025年12月6日
    2
  • css自动换行属性与保留空白属性冲突_css换行样式

    css自动换行属性与保留空白属性冲突_css换行样式word-break属性规定自动换行的处理方法。提示:通过使用word-break属性,可以让浏览器实现在任意位置的换行。所有主流浏览器都支持word-break属性。语法:word-break:normal|break-all|keep-all;normal使用浏览器默认的换行规则。break-all允许在单词内换行。keep-all只能在半角空格或连字符处换行。word-break:break-all所有的都换行,右侧换行没有空隙。word-wrap属性允许

    2025年6月27日
    3

发表回复

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

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