• 售前

  • 售后

热门帖子
入门百科

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

[复制链接]
梨波儿 显示全部楼层 发表于 2021-10-25 20:11:48 |阅读模式 打印 上一主题 下一主题
本文实例讲述了PHP数组去重的更快实现方式。分享给各人供各人参考,详细如下:
概述
利用PHP的
  1. array_unique()
复制代码
函数允许你通报一个数组,然后移除重复的值,返回一个拥有唯一值的数组。这个函数大多数环境下都能工作得很好。但是,如果你实行在一个大的数组里利用
  1. array_unique()
复制代码
函数,它会运行地慢一些。
有一个比力好而且更快的函数
  1. array_flip()
复制代码
来替换利用
  1. array_unique()
复制代码
函数来创建唯一的数组。这个邪术般的函数会交换数组里面每一个元素的键和值,因为键值必须唯一,因此,你会得到跟
  1. array_unique()
复制代码
函数一样的效果。
PHP代码:
  1. /* 创建一个包含重复值的,一共四个元素的数组 */
  2. $array = array('green','blue','orange','blue');
  3. /* 翻转数组,你将会得到唯一键值的数组
  4.     array('green'=>0,'blue'=>1,'orange'=>2); */
  5. $array = array_flip($array);
  6. /* 然后再翻转一次,将键和值重新放置,然后得到数组:array(0=>'green',1=>'blue',2=>'orange'); */
  7. $array = array_flip($array);
  8. print_r($array)
复制代码
运行效果:
  1. Array
  2. (
  3.   [0] => green
  4.   [3] => blue
  5.   [2] => orange
  6. )
复制代码
因为我们已经移除了一些元素,因此数组看起来不是正常的序列。比如我们大概会得到:
  1. array(0=>'A',2=>'B',5=>'C');
复制代码
。在某些环境下,这不是一个标题,但是如果你须要数组的键值保持数字的序列,你可以利用一到两种方法办理键值乱序的标题。
利用array_merge修复数组的keys
添加
  1. array_flip
复制代码
之后的函数,将会对数组的键值排序并且让它们规复到正常的序列,如:0,1,2,3…
PHP代码:
  1. $array = array('green','blue','orange','blue');
  2. $array = array_flip($array);
  3. $array = array_flip($array);
  4. /* 使用array_merge()函数修复键值*/
  5. $array = array_merge($array);
  6. print_r($array)
复制代码
运行效果同上
第二种方式,利用array_keys
注意,这种修复数组键值的方法比利用
  1. array_merge()
复制代码
函数轻微快了一点。你也可以在末了一步联合利用
  1. array_keys()
复制代码
函数(此函数返回翻转后的值)。然后当你翻转数组的值,键值就会根据次序创建。
PHP代码:
  1. $array = array('green','blue','orange','blue');
  2. $array = array_flip($array);
  3. /* 跟第一个例子一样,但是现在我们先提取数组的键值 */
  4. $array = array_keys($array);
  5. print_r($array)
复制代码
运行效果同上
结论
非常简单,比起在大数组利用
  1. array_unique
复制代码
函数,有了一个有用的性能提升。
PS:本站还有两款比力简单实用的在线文本去重复工具,保举给各人利用:
在线去除重复项工具:
http://tools.jb51.net/code/quchong
在线文本去重复工具:
http://tools.jb51.net/aideddesign/txt_quchong
更多关于PHP相干内容感爱好的读者可检察本站专题:《PHP数组(Array)操纵本领大全》、《PHP常用遍历算法与本领总结》、《php字符串(string)用法总结》、《php常用函数与本领总结》、《PHP错误与非常处置惩罚方法总结》、《PHP基本语法入门教程》、《php面向对象步调筹划入门教程》及《PHP数学运算本领总结》
希望本文所述对各人PHP步调筹划有所帮助。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作