sepertinya kamu salah pada saat pembentukan array:
$urut = array($a => $mhs[1], $b => $mhs[2], $c => $mhs[3], $d => $mhs[4]);
pastikan variabel $a,$b,$c,$d sudah dibentuk. Dan saya rasa ada sedikit masalah dengan cara ini,jika ada nilai yang sama, coba gunakan cara berikut:
jika
$a milik ani
$b milik budi
$c milik joe
$d milik sasa
maka bentuk dua array seperti ini:
$nilai = array($a,$b,$c,$d);
$mhs = array('ani','budi','joe','sasa');
key index untuk nilai dan nama mahasiswa di kedua array harus sama. Kemudian gunakan function
array_multisort$nilai = array($a,$b,$c,$d);
$mhs = array('ani','budi','joe','sasa'); //hasil ascending
array_multisort($nilai,$mhs);
$rangking = 1;
for($i = 3; $i >0; $i--){
echo 'rangking '.$rangking.' '.$mhs[$i].'<br/>';
$rangking ++;
}