ya he encontrado el problema, me comparaba números negativos con 0 y entonces, como 0 es mayor que negativo, me repetía en las ultimas posiciones el último mayor que 0 encontrado. para solucionarlo cambiamos los valores de 0 por -100 como muestro en el siguiente script:
Código PHP:
//ordenamos la array
//creando la matriz ordenada
for ($n=0; $n<$i; $n++){
$mayor = -100;//buscamos el mayor
for($k=0; $k<$i; $k++) {
if($row[$k][4] >= $mayor){
$lugar = $k; //me guardo la posición del mayor
$mayor = $row[$k][4]; //me guardo el valor mas alto
$row_mayor = $row[$k]; //guardo la array que tiene el valor mas alto
}
}
//tenemos el mayor, lo metemos donde toca
$array_ordenada[$n]=$row_mayor;
$row[$lugar][4] = -100; // le doy valor -100 a la array vieja para evitar volverla a poner en el lugar mas alto
}