我有一个包含许多值的数组,我希望得到一个值,显示所有值。像这样。
我的数组
$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
抱歉我的英语不好。
答案 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 )