代码之家  ›  专栏  ›  技术社区  ›  FlyingCat

如何查找数组中的重复值和最高值

  •  1
  • FlyingCat  · 技术社区  · 14 年前

    我有这样的阵列

    array={'a'=>'2','b'=>'5', 'c'=>'6', 'd'=>'6', 'e'=>'2'};
    

    数组值可能不同,具体取决于$_post变量。我的问题是如何在数组中找到最大值并返回索引键。在我的例子中,我需要得到“c”和“d”以及6的值。不知道怎么做。任何帮助都会受到感激。谢谢。

    4 回复  |  直到 14 年前
        1
  •  4
  •   mmattax    14 年前
    $max  = max(array_values($array));
    $keys = array_keys($array, $max);
    
        2
  •  1
  •   Alistair    14 年前

    看一看 arsort 它将按相反的顺序对数组排序并保持索引关联。所以:

    arsort($array);
    

    这将以数组顶部的最大值结束。取决于你需要什么 array_unique 无法从数组中删除重复值。

        3
  •  1
  •   RobertPitt    14 年前
    $array = array(
      'key1' => 22,
      'key2' => 17,
      'key3' => 19,
      'key4' => 21,
      'key5' => 24,
      'key6' => 8,
    );
    
    function getHighest($array)
    {
       $highest = 0;
       foreach($array as $index => $value)
       {
          if(is_numeric($value) && $value > $highest)
          {
              $highest = $index;
          }
       }
       return $highest;
    }
    
    echo getHighest($array); //key5
    
        4
  •  0
  •   Mikulas Dite    14 年前

    或者这应该有魔力,它可能比PHP内置函数更快。

    $maxValue = -1;
    $max = array();
    foreach ($items as $key => $item) {
        if ($item == $maxValue) {
            $max[] = $key;
        } elseif ($item > $maxValue) {
            $max = array();
            $max[] = $key;
            $maxValue = $item;
        }
    }