获得$ n个最大值

kap*_*els 1 php

直截了当的问题 -

如果$ n = 3,

和输入是 -

Array
(
    [04] => 3
    [07] => 4
    [01] => 5
    [06] => 5
    [05] => 5
    [03] => 6
    [08] => 6
    [02] => 7
    [09] => 8
    [12] => 9
    [10] => 10
    [15] => 10
    [19] => 11
    [20] => 11
    [13] => 12
    [21] => 12
    [16] => 13
    [14] => 14
    [22] => 14
    [23] => 15
    [11] => 15
    [00] => 15
    [17] => 17
    [18] => 17
)
Run Code Online (Sandbox Code Playgroud)

输出应该是 -

Array
(   [14] => 14
    [22] => 14
    [23] => 15
    [11] => 15
    [00] => 15
    [17] => 17
    [18] => 17
)
Run Code Online (Sandbox Code Playgroud)

谢谢大家,求助.

Mat*_*hew 5

就像是:

function biggest_n(array $a, $n)
{
  $u = array_unique($a);
  if (count($u) <= $n) return $a;
  rsort($u);
  $val = $u[$n - 1];

  return array_filter($a, function($e) use($val) { return $e >= $val; });
}
Run Code Online (Sandbox Code Playgroud)