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


相关推荐

  • [Motion]MPU9250的详细功能

    简述接下来的内容将对MPU9250的基本的功能进行详细的介绍,主要会分模块进行阐述。时钟MPU9250有两个内部时钟源,以及一个PLL。内部时钟源:时钟源说明内部振荡器功耗低,但时钟精度略差X,Y或Z方向的GyroMEMS时钟,功耗较高,但时钟精确(只要Gyro一经启用,就会使用该时钟源)时钟的选择需要综合平衡时钟精度和功耗两个因素,所以从MPU9250的性

    2022年4月8日
    41
  • 【Nginx】Windows 重启 Nginx.exe 命令

    【Nginx】Windows 重启 Nginx.exe 命令(1)Windows重启Nginx.exe命令其中/IM是用来kill掉指定名字的进程的,-F是用来强制kill的,详细的参数介绍可以在dos中通过TASKKILL/?查看taskkill/IMnginx.exe/Fstartnginx.exe

    2022年6月19日
    60
  • 计算机的139 135 445端口关闭_系统端口设置在哪里

    计算机的139 135 445端口关闭_系统端口设置在哪里近期永恒之蓝勒索病毒迅速传播,基本上都是通过135,137,138,139,445等端口入侵,关闭445135137138139端口是有效预防入侵的方式之一,同时更新微软最新补丁,及时备份重要数据,才能从容应对病毒侵袭,下面重点介绍关闭135,137,138,139,445端口方法。关闭445135137138139端口方法教程方法一:方法二:1、打开Windows徽标(开始菜单)…

    2022年8月31日
    7
  • termux安装kali图形界面_kali如何创建shell脚本

    termux安装kali图形界面_kali如何创建shell脚本解决方法:在终端输入以下命令行:sudogedit/usr/share/applications/Pycharm.desktop1进入gedit文档界面然后将里面的内容复制成:[DesktopEntry]Type=ApplicationName=PycharmGenericName=Pycharm3Comment=Pycharm3:ThePythonIDEExec=…

    2022年8月25日
    8
  • 到底学Python还是Java?一张图PK明白!

    到底学Python还是Java?一张图PK明白!点击上方“程序人生”,选择“置顶公众号”第一时间关注程序猿(媛)身边的故事Java和Python一直都是两种很火很强大的编程语言,对于刚开始起步学习编程的同学来说,会迷惑且最经常问的问题是,我该学Java还是Python,是不是Python容易学,或是应该先学什么编程语言等等这样的问题。作为一名Java程序员,肯定会建议你先学Java,然后再学Python,但如果你问一个

    2022年7月7日
    21
  • 关于Python缩进,我们该了解哪些?

    关于Python缩进,我们该了解哪些?Python是一门独特的语言,它的代码块是通过缩进(Indentation)来标记的(大部分语言都是使用花括号作为代码块的标记),具有相同缩进的多行代码属于同一个代码块。如果代码莫名其妙的乱缩进,Py

    2022年7月5日
    25

发表回复

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

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