Php 数组中最高值的返回索引
从如下所示的数组中,如何获取数组中最高值的索引。对于下面的数组,期望的结果是“11”Php 数组中最高值的返回索引,php,arrays,Php,Arrays,从如下所示的数组中,如何获取数组中最高值的索引。对于下面的数组,期望的结果是“11” Array ( [11] => 14 [10] => 9 [12] => 7 [13] => 7 [14] => 4 [15] => 6 ) 我的解决办法是: $maxs = array_keys($array, max($array)) 注意: 通过这种方式,您可以检索与给定最大值相关的每个键 如果您只对其中一个键感兴趣,
Array (
[11] => 14
[10] => 9
[12] => 7
[13] => 7
[14] => 4
[15] => 6
)
我的解决办法是:
$maxs = array_keys($array, max($array))
注意:通过这种方式,您可以检索与给定最大值相关的每个键
如果您只对其中一个键感兴趣,只需使用$maxs[0]类似的方法即可
function array_max_key($array) {
$max_key = -1;
$max_val = -1;
foreach ($array as $key => $value) {
if ($value > $max_val) {
$max_key = $key;
$max_val = $value;
}
}
return $max_key;
}
array\u search()返回值:
如果在数组中找到针,则返回针的键,否则返回FALSE
如果在干草堆中多次找到针,则返回第一个匹配的键。若要返回所有匹配值的键,请将array_keys()与可选的search_value参数一起使用 函数取自
就像一个魔咒一样工作我的解决方案是获得更高的关键点,如下所示:
max(array_keys($values['Users']));
我知道已经有答案了,但我发现这里有一个更优雅的解决方案:
arsort($array);
reset($array);
echo key($array);
瞧 其他答案的代码可能较短,但此答案应该是最有效且易于理解的
/**
* Get key of the max value
*
* @var array $array
* @return mixed
*/
function array_key_max_value($array)
{
$max = null;
$result = null;
foreach ($array as $key => $value) {
if ($max === null || $value > $max) {
$result = $key;
$max = $value;
}
}
return $result;
}
最好使用第一项的键和值作为默认值。更不用说性能了。在处理数组时,每次检查最大值比“糟糕的做法”更糟糕。我提到它不是我的实现。这是一个快速而肮脏的复制/粘贴,OP显然自己做不到,先生。我不会说谎,你让我笑了一下。您关心数组中每次迭代的max()?这“比坏习惯更糟糕”。不,我不相信。这不是最优雅的,但它可以工作。如何查看两个值是否相同?如果有,您可以检查结果是否有两个或多个值duplicates@AlphaMale我想你的意思是两个键,因为最大值定义为一@JustinE如果你不想要重复的键,只需搜索最大值(即避免
array\u keys
),你只会得到一个对应于最大值的键。这已经有一段时间了,但你的数组似乎已经排序(降序);要么这是一个坏例子,要么你真的需要reset($arr);回声键($arr)代码>:)顺便说一句,重置
是不必要的。
max(array_keys($values['Users']));
arsort($array);
reset($array);
echo key($array);
/**
* Get key of the max value
*
* @var array $array
* @return mixed
*/
function array_key_max_value($array)
{
$max = null;
$result = null;
foreach ($array as $key => $value) {
if ($max === null || $value > $max) {
$result = $key;
$max = $value;
}
}
return $result;
}