le funzioni per ordinare gli array hanno un return boleano TRUE/FALSE e non danno come return l'array riordinato.
Esse modificano la variabile-array passatagli come parametro.
La cosa che rende difficile il tuo caso è la necessità di preservare le key dell'array dato. Io ho pensato a:
Codice PHP:
$media = array(0,4,5,0,8,5,2,0,0,5,0,8,0,0,5,0,0,0,0,5,2,0,5,0,0,0,5,0,0,8);
arsort($media, SORT_NUMERIC);
$new_array = array();
$i =0;
foreach($media as $k=>$v)
{
$new_array[$k] = $v;
$i++;
if($i==5) break;
}
echo '<pre>';
print_r($new_array);
echo '</pre>';
Ma è probabile che vi siano soluzioni migliori che ora nn mi sovvengono.