2012-11-14 43 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