从数组中查找4个最高值

Kem*_*lah 0 php arrays max

而不只是1,如何从数组中选择4个最高值max()

Gor*_*don 10

你可以用一个 SplMaxHeap

function maxN(array $numbers, $n)
{
    $maxHeap = new SplMaxHeap;
    foreach($numbers as $number) {
        $maxHeap->insert($number);
    }
    return iterator_to_array(
        new LimitIterator($maxHeap, 0, $n)
    );
}
Run Code Online (Sandbox Code Playgroud)

用法(演示):

print_r( maxN( array(7,54,2,4,26,7,82,4,34), 4 ) );
Run Code Online (Sandbox Code Playgroud)


Rob*_*bin 7

你可以试试这个:

$a = array(3,5,6,1,23,6,78,99);
asort($a);
var_dump(array_slice($a, -4));
Run Code Online (Sandbox Code Playgroud)

HTH.


Emi*_*röm 6

这将在Θ(n)时间内完成:

$a = $b = $c = $d = null;
foreach($array as $v) {
  if(!isset($a) || $v > $a) {
    $d = $c;
    $c = $b;
    $b = $a;
    $a = $v;
  }elseif(!isset($b) || $v > $b) {
    $d = $c;
    $c = $b;
    $b = $v;
  }elseif(!isset($c) || $v > $c) {
    $d = $c;
    $c = $v;
  }elseif(!isset($d) || $v > $d) {
    $d = $v;
  }
}

$result = array($a, $b, $c, $d);
Run Code Online (Sandbox Code Playgroud)