我有一个存储测验答案的数组。给出的答案可以是A,B或C,有四个问题。
我正在尝试计算出每个答案的答案数量,以便我可以将用户推送到以下屏幕:
我使用以下内容来计算每个实例的计数:
$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()
函数之后,我可以看到它没有选项来解决有两个可行选项的问题。
答案 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)
您可以使用current
和end
方法比较值,如下所示
$most = array("a"=>3, "b"=>1);
sort($most);
$min = current($most);
$max = end($most);
if($min == $max){
echo "mixed";
}else{
echo "Highest: ".max($most);
}