Сортировка по списку транзакций, чтобы найти 10 самых популярных - PullRequest
0 голосов
/ 27 февраля 2019

Хорошо, у меня есть массив, который выглядит следующим образом (показан только первый элемент):

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 голосов
/ 27 февраля 2019

Я бы извлек description в массив и посчитал значения, затем отсортировал по убыванию и нарезал первые десять:

$popular_dataset = array_count_values(array_column($transactions, 'description'));
arsort($popular_dataset);
$top_ten = array_slice($popular_dataset, 0, 10);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...