如何计算数组的频率(PHP)

时间:2018-09-06 00:52:21

标签: php

我是php的初学者

如何计算“得分”的频率并将其按得分的降序排列在表格中?

array = 15,17,17

+-------------+-----------+
|    Score    | Frequency |
+-------------+-----------+
| 17          | 2         |
| 15          | 1         |
+-------------+-----------+

我有一个多星期的时间遇到​​此问题,我已经尝试过array_count_values,但是它将所有值打印在一行中。

2 个答案:

答案 0 :(得分:1)

您应该可以像下面一样使用array_count_values()来实现它。

<?php
   $array = [15, 17, 17];
   print_r(array_count_values($array));

这将输出以下内容-值和计数。

Array
(
    [15] => 1
    [17] => 2
)

一种适合您情况的用例是(如果以HTML输出):

<?php
    $array = [15, 17, 17];
    $scores = array_count_values($array);
    krsort($scores);  // Order array by score descending.

    foreach ($scores as $value => $count) {
        echo $value . ": " . $count . "<br/>";
    }

答案 1 :(得分:1)

我认为使用krsort()而不是arsort()这样的东西会得到所需的输出:

<?php
$array = [15, 17, 17];
$scores = array_count_values($array);
krsort($scores);  // This will order it by score descending.

echo "<table>\n";
echo "<tr><th>Score</th><th>Frequency</th></tr>\n";
foreach ($scores as $value => $count) {
    echo "<tr><td>" . $value . "</td><td>" . $count . "</td></tr>\n";
}
echo "</table>\n";