我试图从数组中获得第二高的值,我只是想知道是否可以执行类似MAX -1的操作,或者我绝对需要按表排序并获得第二高的值
private function max_key($array) {
foreach ($array as $key => $val) {
if ($val == max($array)) return $key;
}
}
Run Code Online (Sandbox Code Playgroud)
似乎没有这样的标准功能(它太具体了).
您可以排序并获得第二个价值,但这很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)
| 归档时间: |
|
| 查看次数: |
232 次 |
| 最近记录: |