我有一个数组有时有重复的条目,比如我有一个数组
array("dog", "cat", "cat", "mouse", "cat", "dog")
现在如果我使用这里找到的方法我可以使数组成为一个唯一的数组,像这样
array("dog", "cat", "mouse")
然而,我要做的是首先根据值密度对这个列表进行排序,例如,在原始数组中有3只猫,2只狗和1只老鼠,但是唯一的这个顺序是不正确的狗->猫->老鼠而不是猫->狗->老鼠。如何按密度对数组排序并使其唯一?
首先计算每个项目的基数(密度):
$counts = array_count_values($array);
然后按降序排序结果,注意保留键:
arsort($counts);
最后你得到(唯一的)键按降序排序:
$result = array_keys($counts);
实际操作
注意这个方法非常方便,但是你只能使用可以作为数组键的值(即字符串和整数)。如果输入包含其他类型的数据(浮点数、对象、数组),则需要手动执行此操作。