php数组按数组中的值进行投票

时间:2014-10-13 05:07:35

标签: php arrays sorting

我有一个包含许多值的数组,我希望得到一个值,显示所有值。像这样。

我的数组

$allValues = array(0,1,1);         // i want to get 1, because two 1 vs one 0

// other example
$allValue = array(0,0,0,1,1);      // I want to get 0, because three 0 vs two 1

// other example
$allValues = array(0,1);           // I want to get 0, because one 0 vs one 1 is 50:50 but 0 is first value

抱歉我的英语不好。

5 个答案:

答案 0 :(得分:3)

<?php
$allValues = array(0,1,1);   

$result=array_count_values($allValues);   // Count occurrences of everything
arsort($result);                          // Sort descending order
echo key($result);                        // Pick up the value with highest number
?>

修改:我已使用key(),因为您有兴趣知道出现次数最多的值而非数字本身。如果您只需要该号码,则可以删除key()来电。

<强> Fiddle

答案 1 :(得分:3)

试试这个

$allValues = array(0,0,0,1,1); 
$count = array_count_values($allValues);
echo $val = array_search(max($count), $count);

答案 2 :(得分:0)

仅适用于0和1

function evaluateArray($array) {
    $zeros = 0;
    $ones  = 0;

    foreach($array as $item) {
        if($item == 0) {
            $zeros++;
        } else {
            $ones++;
        }
    }
    // Change this if you want to return 1 if the result is equal
    // To return ($ones >= $zeros) ? 1 : 0; 
    return ($zeros >= $ones) ? 0 : 1;
}

答案 3 :(得分:0)

试试这个:

function find_value($array) {
    $zeros = 0;
    $ones = 0;
    for($i = 0; $i < count($array); $i++) {
        ($array[$i] == 0) ? $zeros++ : $ones++;
    }
    if($zeros == $ones) return $array[0];
    return ($zeros > $ones) ? 0 : 1;
}

答案 4 :(得分:0)

你可以使用array_count_values - 计算数组的所有值

<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
?>

<强>输出

阵 (     [1] =&gt; 2     [你好] =&gt; 2     [world] =&gt; 1 )