MAX - 1 php ?? 它存在吗?

use*_*834 3 php max

我试图从数组中获得第二高的值,我只是想知道是否可以执行类似MAX -1的操作,或者我绝对需要按表排序并获得第二高的值

private function max_key($array) {
    foreach ($array as $key => $val) {
    if ($val == max($array))  return $key;
    }
    }
Run Code Online (Sandbox Code Playgroud)

Ria*_*iaD 6

似乎没有这样的标准功能(它太具体了).
您可以排序并获得第二个价值,但这很O(n log n)复杂.

O(n) solution

function second_key($array){
    $max=null;
    $second = null;
    foreach($array as $k => $v){
        if(!isset($max) || $v > $array[$max]){
            $second = $max;
            $max = $k;
        }
        elseif(!isset($second) || $v > $array[$second]){
             $second = $k;
        }
    }
    return $second;
}
Run Code Online (Sandbox Code Playgroud)