Php – Finding 4 highest values from an array

arraysmaxPHP

Instead of just 1, how can I pick the 4 highest values from an array using max()?

Best Answer

You could use an 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)
    );
}

Usage (demo):

print_r( maxN( array(7,54,2,4,26,7,82,4,34), 4 ) );