STEP 1
Nello script originale che hai postato il ciclo foreach che tu utilizzavi per la stampa a video con echo

Con la mia modifica quello stesso script è stato utilizzato per costruire un array bidimensionale che ho chiamato $data.

Quindi $data è articolato così

$data=array(
array('filename'=> 'nome_utente', 'kk'=>'punteggio')
array('filename'=> 'nome_utente2', 'kk'=>'punteggio2')
array('filename'=> 'nome_utente3', 'kk'=>'punteggio3')
);

all'interno dell'array $data ci saranno tanti array quanti sono gli utenti.

STEP 2

"smontando" l'array $data appena creato faccio due array
$filename = array();
$kk = array();

e li vado a riempire con il ciclo foreach stando attendo a non la stessa chiave agli elementi ($k):

foreach($data as $k=>$v){
$filename[$k] = $v['filename'];
$kk[$k] = $v['kk'];
}

STEP 3

A questo punto è possibile applicare la funzione array_multisort(): la quale serve ad ordinare più array insieme o un array multidimensionale, rispetto a una o più delle sue dimensioni (è complicatissima e non sò manco io spiegartela bene... se arriva un GURU DEL FORUM mi piacerebbe leggerlo anche a me).

cmq per info vai http://www.matriz.it/tutorials/6-php..._array_in_php/