首页 > 解决方案 > PHP 中的哪些集合来计算和排序发生率

问题描述

使用 PHP 7.3/7.4 我想使用/创建一个键值集合。我想多次按下同一个键。每次值应该递增(第一次值为 1)。最后,我需要获取按值排序的键值对。

例如

$somecollection = ???
$somecollection->add('hello')
$somecollection->add('bye')
$somecollection->add('hello')
$somecollection->add('John')
$somecollection->add('bye')
$somecollection->add('hello')

应该返回

$ordered = $somecollection->ordered()
dump($ordered) --> ['hello' -> 3, 'bye' -> 2, 'john' ->1]

这已经存在了吗?

标签: phparrayscollections

解决方案


有一个本机 PHP 函数。请参阅array_count_values()

只需通过将其推入普通数组来添加一个值:

$values = [];

$values[] = 'hello';
$values[] = 'bye';
$values[] = 'hello';
$values[] = 'John';
$values[] = 'hello';
$values[] = 'bye';

// Count the unique instances in the array
$totals = array_count_values($values);

// If you want to sort them
asort($totals);

// If you want to sort them reversed
arsort($totals);

结果$totals数组将是:

Array
(
    [hello] => 3
    [bye] => 2
    [John] => 1
)

推荐阅读