获取数组中最常见的值,或显示混合结果

时间:2015-02-06 16:43:59

标签: php arrays

我有一个存储测验答案的数组。给出的答案可以是A,B或C,有四个问题。

我正在尝试计算出每个答案的答案数量,以便我可以将用户推送到以下屏幕:

  • 主要是A的
  • 主要是B的
  • 主要是C的
  • 混合(例如AABB)

我使用以下内容来计算每个实例的计数:

$most = array_count_values($answers[0]); 

获得结果:

array(2) {
   ["a"]=> int(3)
   ["b"]=> int(1)
}

1)如何获得int个最高的值?例如,在上面的情况下,它将是“A”?

2)如果没有highest值,我如何区分?例如,在下面的情况中:

array(2) {
    ["a"]=> int(2)
    ["b"]=> int(2)
    }

在这种情况下,我需要答案“混合”。

你会怎么做?在研究了max()函数之后,我可以看到它没有选项来解决有两个可行选项的问题。

3 个答案:

答案 0 :(得分:1)

我想你想从最高整数值中检索索引键(a,b或c)。如果我错了,请纠正我。

你可以这样做:

$ar= array(
   "a"=> 3,
   "b"=> 6,
    "c"=> 9

);

 $max = array_keys($ar, max($ar));
 echo $max[0]; 

$ max将是一个包含具有最高值的所有键的数组。例如,如果A和B具有相同的值并且最高,那么您可以使用max[0]max[1]访问这两个值。类似的你可以算出多少平等的#34;赢家"你得到$ max数组的长度(count($max)

答案 1 :(得分:0)

您可以使用函数arsort找到最高值。它将按从高到低的值对数组进行排序。

要检查是否存在平局,您可以检查数组元素0 ==数组元素1。

$a = array(
    'A' => 1,
    'B' => 5,
    'C' => 2
);
arsort($a)

$highest = $a[0];
$tie = ($a[0] == $a[1]) ? true : false;

答案 2 :(得分:-1)

您可以使用currentend方法比较值,如下所示

$most = array("a"=>3, "b"=>1); 
sort($most);
$min = current($most);
$max = end($most);

if($min == $max){
  echo "mixed";
}else{
  echo "Highest: ".max($most);
}