Как найти дубликат и самое высокое значение в массиве - PullRequest
1 голос
/ 05 июня 2010

У меня есть такой массив

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

Значение массива может отличаться в зависимости от переменных $ _POST. Мой вопрос, как найти самое высокое значение в моем массиве и вернуть ключ индекса. В моем случае мне нужно получить «c» и «d» и значение 6. Не уверен, как это сделать. Любая помощь будет оценена. Спасибо.

Ответы [ 4 ]

4 голосов
/ 05 июня 2010
$max  = max(array_values($array));
$keys = array_keys($array, $max);
1 голос
/ 05 июня 2010
$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
1 голос
/ 05 июня 2010

Посмотрите на arsort , который будет сортировать массив в обратном порядке и поддерживать связь с индексами. Итак:

arsort($array);

Это приведет к наибольшим значениям в верхней части массива. В зависимости от того, что вам нужно, array_unique может удалить повторяющиеся значения из вашего массива.

0 голосов
/ 05 июня 2010

Или это должно сработать, вероятно, это будет быстрее, чем встроенные функции php

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