0

我有一个像这样的数组:

$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。但我不知道如何......感谢您的帮助!

4

3 回答 3

8

尝试

$count = array_count_values($names);
arsort($count, SORT_NUMERIC);
$result = array_slice($count, 0, 3);
print_r($result);
于 2012-11-14T08:35:58.757 回答
4

你可能想调查一下array_slice()

$highest = array_slice($count, 0, 3);

这将返回该数组的前三个元素。文档可以在这里找到

于 2012-11-14T08:36:30.210 回答
2

试试这个

$i = 0;
foreach ($count as $key => $value) {
    if($i == 3){
        break;
    }
    echo $value . ' – ' . $key . '<br />';
    $i++;
}
于 2012-11-14T08:36:02.417 回答