Hace unas semanas en el sitio de ldu.com.ec me solicitaron realizar un listado de los goleadores del equipo, pero guardar datos de dos fases la actual y la previa y segun la suma de las fases ordenar el ranking, sin embargo los datos se guarban en un archivo xml y pues primero tenia que parsearlo y pasar uno a uno los jugadores para sacar cuantos goles llevaban sumados y pues el sistema es un formulario muy simple y pues el editor podria insertar la informacion en orden y listo, pero…. que pasaria si el editor no los ordena? el ranking ya no seria un ranking seria una simple lista cosa que en un portal deportivo no da muchas informacion.

Asi que a raiz de que en ese momento mi internet esta hecho una mi@$#a pues me saque un algoritmo y saque el siguiente codigo el cual es para usarlo en joomla sin embargo con unas pequeñas modificaciones podrian pasar cualquier array.

$nparams = new mosParameters( $list );    $nums = 14;    $jugador = array();    $goles = array();    $first = array();    $second = array();    for($i=0;$i<$nums;$i++){    if(trim( $nparams->get('jugador'.$i)) != ""){    $gol = intval($nparams->get('goles'.$i)) + intval($nparams->get('l0goles'.$i));    $goles[$i] = $gol;    $first[$i] = intval($nparams->get('goles'.$i));    $second[$i] = intval($nparams->get('l0goles'.$i));    $jugador[$i] = stripslashes( $nparams->get('jugador'.$i));    $a = $i - 1;    if($gol > $goles[$a]){    while(($gol > $goles[$a]) AND ($a >= 0)){    $jugador[$a + 1] = $jugador[$a];    $first[$a + 1] = $first[$a];    $second[$a + 1] = $second[$a];    $goles[$a + 1] = $goles[$a];    $goles[$a] = intval($nparams->get('goles'.$i)) + intval($nparams->get('l0goles'.$i));    $first[$a] = intval($nparams->get('goles'.$i));    $second[$a] = intval($nparams->get('l0goles'.$i));    $jugador[$a] = stripslashes( $nparams->get('jugador'.$i));    $a = $a - 1;    }    }    $tnums++;    }    }

Si se fijan el while es el que se encarga de re-ordenar el valor goles si el gol anterior es menor al actual.