我想找到数组中第二高的变量.
例如,如果我有:
$cookies = array(
"chocolate" => "20",
"vanilla" => "14",
"strawberry" => "18",
"raspberry" => "19",
"bluebery" => "29"
);
Run Code Online (Sandbox Code Playgroud)
我可以max($cookies)用来找到最高的变量,即"bluebery" => "29".
但我如何找到第二高? "chocolate" => "20"
Ry-*_*Ry- 14
对它进行排序并获得第二项是最简单的方法:
arsort($cookies);
$keys = array_keys($cookies);
echo $keys[1]; // chocolate
echo $cookies[$keys[1]]; // 20
Run Code Online (Sandbox Code Playgroud)
如果您想要一种更有效的方式,您也可以通过同时跟踪最高和第二高的项目来手动完成:
function secondMax($arr) {
$max = $second = 0;
$maxKey = $secondKey = null;
foreach($arr as $key => $value) {
if($value > $max) {
$second = $max;
$secondKey = $maxKey;
$max = $value;
$maxKey = $key;
} elseif($value > $second) {
$second = $value;
$secondKey = $key;
}
}
return array($secondKey, $second);
}
Run Code Online (Sandbox Code Playgroud)
用法:
$second = secondMax($cookies);
echo "{$second[0]} => {$second[1]}"; // chocolate => 20
Run Code Online (Sandbox Code Playgroud)