我有一个如下所示的数组:
array (size=21)
0 => string '2' (length=1)
1 => string '' (length=0)
2 => string '20' (length=2)
3 => string '19' (length=2)
4 => string '14' (length=2)
5 => string '13' (length=2)
6 => string '' (length=0)
7 => null
8 => null
9 => string '20' (length=2)
10 => null
11 => string '10' (length=2)
12 => string '' (length=0)
13 => null
14 => string '13' (length=2)
15 => null
16 => string '' (length=0)
17 => null
18 => null
19 => string '' (length=0)
20 => string '20' (length=2)
我想通过将具有相同字符串的行分组来从该数组创建一个新数组。例如
2 =>字符串'20'(长度= 2), 20 =>字符串'20'(长度= 2)并且 9 =>字符串'20'(长度= 2)
和
5 =>字符串'13'(长度= 2), 5 =>字符串'13'(长度= 2)
等。
并根据字符串在那里出现的次数对新创建的数组行进行排序。
订单需要从最常见的DESC到最后一个像经典顶级的东西图表(最现在的字符串是第一个,最少的是低)
因此,修改后的数组将如下所示:
array (size=21)
0 => string '20' (length=2)
1 => string '13' (length=2)
...
我还需要以某种方式处理空结果,例如 17 => null 在最终的数组修改结果中根本没有合并。
答案 0 :(得分:1)
这应该可以解决问题:
// Filter the "null results" first
$myarray = array_filter($myarray, create_function('$arg', '
return !is_null($arg);
'));
$occurrences = array_count_values($myarray);
// EDIT: arsort preserves the key => value correlation
arsort($occurrences, SORT_NUMERIC);
var_dump(array_keys($occurrences));
答案 1 :(得分:0)
试试这个。
$result = array_count_values($a);
arsort($result);
$result = array_keys($result);