好的,我有一个数组,布局如下(仅显示第一项):
array(600) {
[0]=>
array(12) {
["id"]=>
string(4) "1163"
["aliasID"]=>
string(1) "1"
["date"]=>
string(10) "2017-06-09"
["type"]=>
string(12) "DD"
["description"]=>
string(18) "GYM MEMBERSHIP"
["plusminus"]=>
string(1) "0"
["amount"]=>
string(2) "15"
["balance"]=>
string(6) "50.00"
["ts"]=>
string(19) "2019-01-27 22:32:29"
["alias"]=>
string(3) "Gym"
["categoryID"]=>
string(1) "1"
["category"]=>
string(10) "Recreation"
}
在这种情况下,有600笔交易。我想浏览一下列表,找到10个最受欢迎的(例如,出现频率最高的)并显示它们。我该如何实现?我不太擅长排序-但是我写了以下代码来将它们加起来:
foreach($transactions as $t) {
if(isset($popular_dataset[$t['description']])) {
$popular_dataset[$t['description']]++;
} else {
$popular_dataset[$t['description']] = 1;
}
}
哪个提供给我一个可以查看最高数组的数组,但是我不确定如何从此处继续。任何建议都很好-我是走正确的道路还是有更简单的方法?
答案 0 :(得分:2)
我将description
提取到数组中并计算值,然后对降序进行排序并切出前十个:
$popular_dataset = array_count_values(array_column($transactions, 'description'));
arsort($popular_dataset);
$top_ten = array_slice($popular_dataset, 0, 10);