基于重复元素数排序/限制PHP中的多维关联数组
我在PHP中有一个多维数组,如下所示:基于重复元素数排序/限制PHP中的多维关联数组,php,Php,我在PHP中有一个多维数组,如下所示: $array = Array ( [0] => Array ( [bill] => 1 ) [1] => Array ( [bill] => 1 ) [2] => Array ( [bill] => 1 ) [3] => Array ( [bill] => 1 ) [4] => Array ( [ja
$array = Array (
[0] => Array ( [bill] => 1 )
[1] => Array ( [bill] => 1 )
[2] => Array ( [bill] => 1 )
[3] => Array ( [bill] => 1 )
[4] => Array ( [jack] => 5 )
[5] => Array ( [jack] => 5 )
[6] => Array ( [jake] => 6 )
[7] => Array ( [jake] => 6 )
[8] => Array ( [jake] => 6 )
[9] => Array ( [jake] => 6 )
[10] => Array ( [sara] => 7 )
[11] => Array ( [sara] => 7 )
[12] => Array ( [sara] => 7 )
[13] => Array ( [sara] => 7 )
[14] => Array ( [william] => 8 )
[15] => Array ( [william] => 8 )
[16] => Array ( [william] => 8 )
[17] => Array ( [william] => 8 )
[19] => Array ( [william] => 8 )
[20] => Array ( [martin] => 9 )
[21] => Array ( [martin] => 9 )
[22] => Array ( [martin] => 9 )
[23] => Array ( [tara] => 10 )
[24] => Array ( [tara] => 10 )
[25] => Array ( [tara] => 10 )
[26] => Array ( [tara] => 10 )
);
我想将$array
转换为$result
,这样它就可以首先根据相似元素的数量对数组进行排序,然后返回前五个值。例如,$array
有五个相似的[william]=>8
,四个相似的[bill]=>1
,四个相似的[jake]=>6
,四个相似的[sara]=>7
,四个相似的[tara]=>10
,三个相似的[martin]=>9
和两个相似的[jack]=>5
在$array
变量中。因此,包含前五个重复次数最多的元素的$result
变量应如下所示:
$result = Array (
[0] => Array ( [william] => 8 )
[1] => Array ( [bill] => 1 )
[2] => Array ( [jake] => 6 )
[3] => Array ( [sara] => 7 )
[4] => Array ( [tara] => 10 )
);
你能帮我解决这个问题吗?创建一个新的数组,将键和值组合在一起,并使用
array\u count\u values
来计算出现的次数。最后排序并检索前5名
$new = array();
foreach($array as $key => $value) {
$new[] = key($value) . '_' . current($value);
}
$counts = array_count_values($new);
arsort($counts);
$results = array();
foreach(array_splice($counts,0,5) as $key => $count) {
$key = explode('_',$key);
$results[] = array($key[0] => $key[1]);
}
print_r($results);
结果:
array(5) {
[0]=>
array(1) {
["william"]=>
int(8)
}
[1]=>
array(1) {
["bill"]=>
int(1)
}
[2]=>
array(1) {
["jake"]=>
int(6)
}
[3]=>
array(1) {
["sara"]=>
int(7)
}
[4]=>
array(1) {
["tara"]=>
int(10)
}
}
希望这对您有所帮助。您无法控制源代码?@Dagon,不是真的,我需要按问题中的方式处理$array,知道吗?foreach循环,创建新数组,添加为key(name)changes@Dagon,你能提交你的答案吗?谢谢,
array(5) {
[0]=>
array(1) {
["william"]=>
int(8)
}
[1]=>
array(1) {
["bill"]=>
int(1)
}
[2]=>
array(1) {
["jake"]=>
int(6)
}
[3]=>
array(1) {
["sara"]=>
int(7)
}
[4]=>
array(1) {
["tara"]=>
int(10)
}
}