2012-06-30 79 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

我喜歡這樣的建議,但這不是問題的解決方案。 –