按出现次数降序对平面数组进行排序并删除重复项[重复]

问题描述 投票:0回答:2

我有一个自动生成的 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
php arrays sorting duplicates custom-sort
2个回答
5
投票

arsort
array_keys
结合使用:

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

现场演示

结果是:

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

(最后三项被交换,但我认为这不重要)


2
投票

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

$occurences=array_count_values($array)
asort($occurences);
© www.soinside.com 2019 - 2024. All rights reserved.