簡體   English   中英

獲取數組中最常見的值,或顯示混合結果

[英]Get the value most common in the array, or show mixed result

我有一個數組,用於存儲測驗的答案。 給出的答案可以是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()函數后,我發現它沒有用於確定存在兩個可行選項的選項。

我想您想從最高的整數值中檢索索引鍵(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]訪問這兩個值。 類似地,您可以通過獲取$ max數組的長度( count($max) )來計算出多少個相等的“獲勝者”

您可以使用arsort函數找到最大值。 它將按照值從高到低的順序對數組進行排序。

要檢查是否存在平局,可以檢查數組元素0 ==數組元素1。

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

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

您可以使用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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM