2016-09-17 1 views

Antwort

1
<?php 

$array = array(
0 => 1, 
1 => 3, 
2 => 7, 
3 => 0, 
4 => 6, 
5 => 3, 
); 

sort($array, SORT_NUMERIC); 
$array = array_slice($array,0,4); 

?> 
+0

Schnell und einfach +1 –

0

Für Fälle, in denen Sie große Arrays und Code müssen in O (n) statt O (n.log laufen (n)), können Sie diese Funktion verwenden:

function min4($array) { 
    $result = [1e300,1e300]; 
    foreach ($array as $val) { 
     if ($val <= $result[1]) { 
      array_splice($result, $val > $result[0] ? 1 : 0, 0, [$val]); 
     } elseif ($val <= $result[3]) { 
      array_splice($result, $val > $result[2] ? 3 : 2, 0, [$val]); 
     } 
    } 
    return array_slice($result, 0, 4); 
} 

Anruf als:

print_r (min4($array)); 

natürlich für Arrays von mittlerer Größe, mit sort wird bessere Leistung geben. Aber bereits für Arrays mit mehr als 300 Elementen wird die obige Funktion in den meisten Fällen besser funktionieren.

Verwandte Themen