次のような配列から、配列の最大値のインデックスを取得するにはどうすればよいですか。以下の配列の場合、望ましい結果は「11」になります。
Array (
[11] => 14
[10] => 9
[12] => 7
[13] => 7
[14] => 4
[15] => 6
)
回答:
私の解決策は次のとおりです。
$maxs = array_keys($array, max($array))
注:
この方法で、特定の最大値に関連するすべてのキーを取得できます。
すべての中で1つのキーのみに関心がある場合は、$ maxs [0]を使用してください。
array_keys
と思います。値
<?php
$array = array(11 => 14,
10 => 9,
12 => 7,
13 => 7,
14 => 4,
15 => 6);
echo array_search(max($array), $array);
?>
array_search()の戻り値:
針が配列内で見つかった場合はそのキーを返し、それ以外の場合はFALSEを返します。
針が干し草の山で複数回見つかった場合、最初に一致したキーが返されます。一致するすべての値のキーを返すには、代わりにオプションのsearch_valueパラメーターを指定してarray_keys()を使用します。
私はそれがすでに答えられていることを知っていますが、これが私がよりエレガントだと思う解決策です:
arsort($array);
reset($array);
echo key($array);
そして出来上がり!
reset
ところで、これは必要ありません。
他の回答のコードは短いかもしれませんが、これが最も効率的で理解しやすいはずです。
/**
* 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;
}
http://www.php.net/manual/en/function.max.phpから取得した関数
function max_key($array) {
foreach ($array as $key => $val) {
if ($val == max($array)) return $key;
}
}
$arr = array (
'11' => 14,
'10' => 9,
'12' => 7,
'13' => 7,
'14' => 4,
'15' => 6
);
die(var_dump(max_key($arr)));
チャームのように機能します
reset($arr); echo key($arr);
:)