如何在阵列中找到最常见的重复项?

时间:2010-10-28 16:11:10

标签: php arrays

在下面创建函数getMostFrequentlyOccurringItem()的最佳方法是什么?

//should return "paragraph"
echo getMostFrequentlyOccurringItem(array('line', 'paragraph', 'paragraph'));

//should return "line"
echo getMostFrequentlyOccurringItem(array('wholeNumber', 'line', 'line', 'line'));

//should return null
echo getMostFrequentlyOccurringItem(array('wholeNumber', 'wholeNumber', 'paragraph', 'paragraph'));

//should return "wholeNumber"
echo getMostFrequentlyOccurringItem(array('wholeNumber', '', '', ''));

function getMostFrequentlyOccurringItem($items) {
    //...
}

答案:

感谢Adam,这是我完成的解决方案: http://tanguay.info/web/index.php?pg=codeExamples&id=396

4 个答案:

答案 0 :(得分:8)

array_count_values()开始,按照您的喜好按摩输出。

php> =array_count_values(array('wholeNumber', 'line', 'line', 'line'))
array(
  "wholeNumber" => 1,
  "line" => 3,
)

arsort($counts, SORT_NUMERIC)会首先对array_count_values()输出进行排序。

答案 1 :(得分:1)

这是候选人,您可以申请the linear-time majority vote algorithm

该链接对如何应用这种出色的简单算法进行了很好的解释。请注意,如果您确实要返回null以指示平局,则需要对数据进行两次传递而不是一次。

答案 2 :(得分:0)

如何实现key和counter的关联数组。

答案 3 :(得分:0)

将数组内嵌到以逗号或空格分隔的字符串中。然后使用preg_match(http://au2.php.net/manual/en/function.preg-match.php)查找指定字符串的出现次数。可以自定义模式以完全匹配或匹配!