多维数组中最常见的值

时间:2012-06-30 16:06:46

标签: php arrays

我的问题可能是重复的,但我觉得很难。 (我已阅读相关主题)

这是数组:

Array
(
    [0] => Array
        (
            [legend] => 38440
        )

    [1] => Array
        (
            [bestw] => 9765
        )

    [2] => Array
        (
            [fiuna] => 38779
        )

    [3] => Array
        (
            [adam] => 39011
        )

    [4] => Array
        (
            [adam] => 39011
        )

    [5] => Array
        (
            [adam] => 39011
        )

)

我已经尝试了很多方法来处理这个数组并找出最常见的值。我期望的结果是“亚当”

$countwin = array_count_values($winnernames);
$maxwin = max($countwin);
$mostwinner = array_keys($countswin, $maxwin);

编辑:我的数组就像这样array("A"=>"1" , "B"=>"2" , "A"=>"1")它应该返回A是最常见的

2 个答案:

答案 0 :(得分:2)

如何迭代你的数组并计算你得到的值?

$occurences = array();
foreach ($data as $row) {
  foreach ($row as $key => $score) {
    if (empty($occurences[$key])) {
      $occurences[$key] = 1;
    } else {
      $occurences[$key]++;
    }
  }
}

然后排序

arsort($occurences);

并抓取已排序数组的第一个元素

$t = array_keys($occurences);
$winner = array_shift($occurences);

答案 1 :(得分:-1)

您可以尝试使用此代码。确实是一种蛮力方法。但快速搜索让我发现这是一个有用的:

function findDuplicates($data,$dupval) {
$nb= 0;
foreach($data as $key => $val)
if ($val==$dupval) $nb++;
return $nb;
}

编辑:抱歉,我误解了你的问题!但这可能是找到最大计数器的第一个提示。