排序和计数更快地找到唯一值
排序和计数更快地找到唯一值

array_unique 函数是一个本机函数,可以提取数组中的不同值。 array_count_values. 也是一个本机函数,它将在数组中提取不同的值,并计算出现的次数。

Array_Count_Values通过提供不同的值的计数,实​​际上比Array_Unique更多的工作,最重要的是。实际上,从array_count_values的结果中提取键删除计数,并且与array_unique相同的结果。

<?php

$a = array('a', 'b', 'c', 'b', 'c', 'c');

print_r(array_unique($a));
//array('a', 'b', 'c');

print_r(array_keys(array_count_values(($a)));
//array('a', 'b', 'c');

?>

奇怪的事实是array_count_values比array_unique更快。它可能是小阵列的两倍(几十价),它会随着阵列的大小而变得更快。有些,喜欢 puremango.  终于采取了在PHP中编写自己的功能,实现更高的速度。

唯一的限制是array_count_values只能计算字符串和整数值(因为如果使用某些其他类型),并且array_unique包含一个排序选项。

尽可能避免array_unique,它将加快代码执行。您可以使用array_count_values,因为它是最快的代码,但也可以使用其他快速替代方案:foreach array_keys. , 或者 array_flip.  (本文的基准:‘array_unique vs array_flip.‘).