通过交易列表进行排序以找到最受欢迎的十大交易

时间:2019-02-26 21:14:44

标签: php sorting

好的,我有一个数组,布局如下(仅显示第一项):

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;
        }
    }

哪个提供给我一个可以查看最高数组的数组,但是我不确定如何从此处继续。任何建议都很好-我是走正确的道路还是有更简单的方法?

1 个答案:

答案 0 :(得分:2)

我将description提取到数组中并计算值,然后对降序进行排序并切出前十个:

$popular_dataset = array_count_values(array_column($transactions, 'description'));
arsort($popular_dataset);
$top_ten = array_slice($popular_dataset, 0, 10);