【译】更快的点子贯彻PHP数组去重

原文:Faster Alternative to PHP’s Array Unique
Function

概述

使用PHP的array_unique()函数允许你传递1个数组,然后移除重复的值,重临三个具有唯一值的数组。那一个函数一大全场地下都能工作得很好。可是,要是你品味在3个大的数组里应用array_unique()函数,它会运转地慢一些。

有二个对比好还要更快的函数array_flip()来取代利用array_unique()函数来创立唯一的数组。这些魔法般的函数会沟通数组里面每1个因素的键和值,因为键值必须唯一,因而,你会赢得跟array_unique()函数一样的结果。

更快的艺术落成PHP数组去重

/* 创建一个包含重复值的,一共四个元素的数组 */
$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);

 

因为大家已经移除了有的因素,由此数组看起来不是常规的队列。比如大家兴许会收获:array(0=>’A’,2=>’B’,5=>’C’);。在一些情状下,这不是二个题材,不过一旦你需求数组的键值保持数字的队列,你能够运用一到三种方法化解键值乱序的题材。

使用array_merge修复数组的keys

添加array_flip之后的函数,将会对数组的键值排序并且让它们苏醒到不奇怪的行列,如:0,1,2,3…

$array = array('green','blue','orange','blue');
$array = array_flip($array);
$array = array_flip($array);

/* 使用array_merge()函数修复键值*/
$array = array_merge($array);

  

其次种艺术,使用array_keys

只顾,那种修复数组键值的情势比使用array_merge()函数稍微快了几许。你也足以在终极一步结合使用array_keys()函数(此函数重返翻转后的值)。然后当您翻转数组的值,键值就会遵照各类创制。

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

  

结论

十三分不难,比起在大数组使用array_unique函数,有了一个使得的天性进步。

相关文章