我有这样如何找到重复的和最高值在数组
array={'a'=>'2','b'=>'5', 'c'=>'6', 'd'=>'6', 'e'=>'2'};
的数组值数组可能取决于$ _ POST变量是不同的。我的问题是如何找到我的数组中的最高值并返回索引键。在我的情况下,我需要得到'c'和'd',值为6.不知道如何做到这一点。任何帮助将不胜感激。谢谢。
我有这样如何找到重复的和最高值在数组
array={'a'=>'2','b'=>'5', 'c'=>'6', 'd'=>'6', 'e'=>'2'};
的数组值数组可能取决于$ _ POST变量是不同的。我的问题是如何找到我的数组中的最高值并返回索引键。在我的情况下,我需要得到'c'和'd',值为6.不知道如何做到这一点。任何帮助将不胜感激。谢谢。
$max = max(array_values($array));
$keys = array_keys($array, $max);
或者这应该做的魔力,它可能会比PHP快的内置功能
$maxValue = -1;
$max = array();
foreach ($items as $key => $item) {
if ($item == $maxValue) {
$max[] = $key;
} elseif ($item > $maxValue) {
$max = array();
$max[] = $key;
$maxValue = $item;
}
}
请你解释为什么这可能更快? – 2010-06-05 13:36:33
最大值,array_keys和array_values最可能都是遍历数组,我的函数只是一次。然而,无论如何,这是如此之快无关紧要。 – 2010-06-05 14:15:40
我需要获取重复值的索引。但thx虽然。 +1 – FlyingCat 2010-06-05 13:38:42
排序为O(n log n)。这可以在O(n)中完成。 – 2010-06-05 13:40:10
$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 – FlyingCat 2010-06-05 13:40:55
更改为返回索引键。 – RobertPitt 2010-06-05 13:41:31
感谢您的回复。 +1 – FlyingCat 2010-06-05 13:39:32
你不应该使用'max(array_values($ array))'嵌入。 OP只想获得价值。将它分成两个语句。 '$ keys'将只包含这些键。 – 2010-06-05 13:39:35
@Felix Kling - 我没有想到他并不关心最大数量...... – mmattax 2010-06-05 13:42:14