2012-11-14 28 views
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个值,所以沃尔特,杰西和斯凯勒。但我不知道如何......感谢您的帮助!

回答

8

尝试

$count = array_count_values($names); 
arsort($count, SORT_NUMERIC); 
$result = array_slice($count, 0, 3); 
print_r($result); 
2

试试这个

$i = 0; 
foreach ($count as $key => $value) { 
    if($i == 3){ 
     break; 
    } 
    echo $value . ' – ' . $key . '<br />'; 
    $i++; 
} 
+0

不能硬编码“3”作为次发生元件可能会有所不同 – asprin

+0

我不明白你的想法号码。这$计数已经是由max计算,所以前三个元素就是他所需要的。我认为array_slice更好。但我只是照现在的问题所有者代码。 –

4

你可能想看看array_slice()

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

这将返回该数组的前三个元素。文档可以发现here