数组唯一按密度排序

时间:2014-06-04 21:41:00

标签: php arrays sorting logic

我有一个有时会有重复条目的数组,比方说我有一个数组

array("dog", "cat", "cat", "mouse", "cat", "dog")

现在,如果我使用我发现here的方法,我可以使数组成为一个像这样的唯一数组

array("dog", "cat", "mouse")

然而,我要做的是首先根据值密度对此列表进行排序,因此例如原始数组中有3只猫,2只狗和1只鼠标,但是这种顺序是唯一的,不正确的狗 - > cat->小鼠而不是cat-> dog->小鼠。我怎么能按密度对数组进行排序然后使其独一无二?

1 个答案:

答案 0 :(得分:4)

首先计算每个项目的基数(密度):

$counts = array_count_values($array);

然后对结果进行降序排序,注意保留键:

arsort($counts);

最后,您按降序排序获得(唯一)键:

$result = array_keys($counts);

<强> See it in action

请注意,此方法非常方便,但您只能使用可用作数组键的值(即字符串和整数)。如果输入包含其他类型的数据(浮点数,对象,数组),则需要手动执行此操作。