2013-09-21 37 views
1

在PHP foreach循環中,我有一個名爲$levels的變量。該變量爲每個循環提供不同的值。這些值都是數字。這些數字在循環的多個實例中也是常見的。PHP在循環中統計不同的數值返回值

因此,例如,一些循環可能會返回數字7,其他循環可能會返回4,而一個可能會返回3.我希望能夠確定在循環過程中生成的最常見數值。

有關如何實現這一目標的任何建議?

+0

出手,這就是正確的循環返回一個數字。大部分時間這些數字都是獨一無二的,但有時它們是相同的。我想返回最多返回的那個。如果他們全部返回相同的時間量,則返回最高的數字。 – John

+1

請添加您現在使用的代碼,這將更容易幫助您 – luttkens

+0

在SO –

回答

0

Store中的循環值到一個數組。

$stuff = array('orange','banana', 'apples','orange', 'xxxxxxx'); 

$result = array_count_values($stuff); 
asort($result); 
end($result); 
$answer = key($result); 

echo $answer; 

我希望這會給你!

+0

這與Ashwini Agarwal的代碼一樣有效。唯一的問題是如果一個返回值只存在一次,那麼它似乎不會返回最高的數字。如果他們都一樣,我想要返回的最高號碼。 – John

1

在循環過程中,您可以創建一個數組(例如$ loopArray),並用所有生成的值填充它。在循環結束時,您可以計算陣列的模式(示例取自this answer)。

$values = array_count_values($loopArray); 
$mode = array_search(max($loopArray), $loopArray); 
+0

在數據集中重複最多的值被稱爲[模式](http://en.wikipedia.org/wiki/Mode_(statistics)),我發佈了代碼以查找它! – Albz

0

你可以做這樣的事情......

$return = array(); 
foreach($array as $key => $value) { 

    ... 

    $return[] = $levels; 
} 

$count = array_count_values($return); 
arsort($count); 

$keys = array_keys($count); 
echo "The most occurring value is $keys[0][1] with $keys[0][0] occurrences." 
0

你可以嘗試這樣的事情

$a = array(1,2,3,4,5,5,6,7,8,8,8,8,9,5,5); 
$test = array(); 
foreach ($a as $value) { 
    //echo $value."<br>"; 
    $test[$value][] = $value; 
} 
echo "--------------------------<br>"; 
echo count($test[8]);