2012-06-30 50 views
0

我的问题可能是重复的,但我真的觉得很难。 (我已阅读相关主题)多维数组中的最常见值

这是数组:

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是最常见的

回答

-1

你可以试试这个代码。确实是一种暴力方法。但是,快速搜索使我这找到一个有用的:

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

编辑:对不起,我误解你的问题!但它可能是找到最大计数器的第一个暗示。

+0

不是真的!我的数组是这样的(“A”=>“1”,“B”=>“2”,“A”=>“1”),它应该返回A是最常见的 –

+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); 
+0

我喜欢这样的建议,但这不是问题的解决方案。 –