如何在PHP数组中找到第N个最常见的值?

时间:2016-03-04 16:09:29

标签: php arrays

我有一个如下所示的数组:

$array = Array(1, 1, 2, 2, 2, 2, 3, 4, 4, 4, 5, 5, 5, 5 ,5, 5, 6, 7, 8);

我知道我可以通过类似的程序轻松找到此数组中重复次数最多的值:

$array = Array(1, 2, 2, 2, 3, 3);
$counts = array_count_values($array);
arsort($counts);

echo key($counts);

但是如何才能找到第二最重复的值?还是第三次?还是第四以及以后?

2 个答案:

答案 0 :(得分:1)

简而言之,您的问题归结为:如何从数组中获取第n个键?

像这样:

echo array_keys($counts)[1];

对于不支持此语法的古老PHP版本:

$keys = array_keys($counts);
echo $keys[1];

答案 1 :(得分:0)

通过排序和显示整个数组,您可以按顺序获取它们:

$array = Array(1, 2, 2, 2, 3, 3);
$counts = array_count_values($array);
arsort($counts);

echo '<pre>';
print_r($counts);

返回:

Array
(
    [2] => 3
    [3] => 2
    [1] => 1
)

数组中的每个后续元素都会将值作为键,按其在数组中的外观的降序排列。