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

У меня нет идеи. этот $ count уже является курортом max, поэтому первые три элемента - это то, что ему нужно. Я думаю, что array_slice лучше. но я просто принимаю код владельца владельца как есть. –

4

Вы можете посмотреть в array_slice().

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

Это возвращает первые три элемента этого массива. Документация не найдена here

Смежные вопросы