我有一个有时会有重复条目的数组,比方说我有一个数组
array("dog", "cat", "cat", "mouse", "cat", "dog")
现在,如果我使用我发现here的方法,我可以使数组成为一个像这样的唯一数组
array("dog", "cat", "mouse")
然而,我要做的是首先根据值密度对此列表进行排序,因此例如原始数组中有3只猫,2只狗和1只鼠标,但是这种顺序是唯一的,不正确的狗 - > cat->小鼠而不是cat-> dog->小鼠。我怎么能按密度对数组进行排序然后使其独一无二?
答案 0 :(得分:4)
首先计算每个项目的基数(密度):
$counts = array_count_values($array);
然后对结果进行降序排序,注意保留键:
arsort($counts);
最后,您按降序排序获得(唯一)键:
$result = array_keys($counts);
<强> See it in action 强>
请注意,此方法非常方便,但您只能使用可用作数组键的值(即字符串和整数)。如果输入包含其他类型的数据(浮点数,对象,数组),则需要手动执行此操作。