我有一个像:
这样的数组$names = array(
"Skyler",
"Jesse",
"Walter",
"Skyler",
"Hank",
"Marie",
"Walter",
"Walter",
"Jesse",
);
要检查数组中相等值的频率,
我用array_count_values
计算它们。
要按每个值的频率对列表进行排序,请使用arsort
:
$count = array_count_values($names);
foreach ($count as $key => $value) {
echo $value . ' – ' . $key . '<br />';
}
所以我明白了:
3 – Walter
2 – Skyler
2 – Jesse
1 – Hank
1 – Marie
现在我只想显示频率最高的3个值,所以Walter,Jesse和Skyler。但我不知道如何...感谢您的帮助!
答案 0 :(得分:8)
尝试
$count = array_count_values($names);
arsort($count, SORT_NUMERIC);
$result = array_slice($count, 0, 3);
print_r($result);
答案 1 :(得分:4)
答案 2 :(得分:2)
试试这个
$i = 0;
foreach ($count as $key => $value) {
if($i == 3){
break;
}
echo $value . ' – ' . $key . '<br />';
$i++;
}