类似于此的内容:Get the element with the highest occurrence in an array
差异是我需要超过1个结果,共需要5个结果。因此,(大)阵列中出现了5个最高位置。
谢谢!
答案 0 :(得分:13)
PHP实际上提供了一些方便的array functions,您可以使用它来实现此目的。
示例:
<?php
$arr = array(
'apple', 'apple', 'apple', 'apple', 'apple', 'apple',
'orange', 'orange', 'orange',
'banana', 'banana', 'banana', 'banana', 'banana',
'pear', 'pear', 'pear', 'pear', 'pear', 'pear', 'pear',
'grape', 'grape', 'grape', 'grape',
'melon', 'melon',
'etc'
);
$reduce = array_count_values($arr);
arsort($reduce);
var_dump(array_slice($reduce, 0, 5));
// Output:
array(5) {
["pear"]=> int(7)
["apple"]=> int(6)
["banana"]=> int(5)
["grape"]=> int(4)
["orange"]=> int(3)
}
编辑:添加了array_slice,如下面的Alix帖子所示。
答案 1 :(得分:7)
你走了:
$yourArray = array(1, "hello", 1, "world", "hello", "world", "world");
$count = array_count_values($yourArray);
arsort($count);
$highest5 = array_slice($count, 0, 5);
echo '<pre>';
print_r($highest5);
echo '</pre>';
答案 2 :(得分:1)
构建计数数组并按相反的顺序排列:
$mode = array_count_values($input);
arsort($mode);
$i = 0;
foreach ($mode as $k => $v) {
$i++;
echo "$i. $k occurred $v times\n";
if ($i == 5) {
break;
}
}