按出现次数排序PHP数组

时间:2014-09-06 09:24:53

标签: php arrays sorting

我有一个自动生成的PHP数组,类似于:

[1] => item
[2] => bar
[3] => plusgallery
[4] => size
[5] => dynamic
[6] => size
[7] => dynamic
[8] => size
[9] => size

(它实际上包含大约3000个项目,这只是一个块)

我在其上使用了array_count_values(),它生成了一个数组,如:

[item] => 1
[bar] => 1
[plusgallery] => 1
[size] => 4
[dynamic] => 2

我怎样才能根据键的值从最高到最低排序到另一个数组?我希望它看起来像:

[1] => size
[2] => dynamic
[3] => item
[4] => bar
[5] => plusgallery

2 个答案:

答案 0 :(得分:5)

arsortarray_keys结合使用:

$countedArray = array_count_values($array);
arsort( $countedArray )
array_keys( $countedArray );

Live Demo

结果是:

array(5) {
  [0]=>
  string(4) "size"
  [1]=>
  string(7) "dynamic"
  [2]=>
  string(11) "plusgallery"
  [3]=>
  string(3) "bar"
  [4]=>
  string(4) "item"
}

(最后三项交换,但我认为这无关紧要)

答案 1 :(得分:2)

function array_count_values返回数组中每个项的出现次数。然后asort排序

$occurences=array_count_values($array)
asort($occurences);