如何按术语频率对数组进行排名?

时间:2011-04-21 21:32:34

标签: php arrays sorting repeat

假设我有一个这样的数组:

$array = array('a', 'b', 'c', 'c', 'c', 'd', 'a', 'b', 'b', 'b', 'b');

我想要做的是返回一个按所包含术语的频率重新排序的数组。所以,像这样:

['b', 'c', 'a', 'd']

由于b出现了5次,c出现了三次,a出现了两次,d只出现一次。怎么做?

2 个答案:

答案 0 :(得分:7)

$counts = array_count_values($array);
arsort($counts);
$list = array_keys($counts);
var_dump($list);

答案 1 :(得分:2)

这应该有帮助

http://www.php.net/manual/en/function.array-count-values.php

直接从手册页

  

描述

     

array array_count_values(array   $ input)array_count_values()返回   使用输入值的数组   数组作为键及其频率   输入为值。

然后根据值

重新排序