Hola,
Por lo que yo he entendido, hemos de partir de la base de que para ordenar una lista de elementos la base sería una evaluación de dos elementos, a resultas de la cual, un elemento(el primero) avance(1), retroceda(-1) o se quede dónde está(0) respecto del segundo.
Y partiendo de esta base php lo que hace es ir comparando:
1er elemento con segundo y posiciona
2ndo con tercero y posiciona
y asi hasta llegar al final.
Por ejemplo este código es un ejemplo para ordenar un array poniendo primero los elementos pares y luego los impares:
Código HTML:
<?php
function cmp($a, $b)
{
// si la suma de dos elementos da un numero par
// es porque los dos son pares o los dos son impares
// con lo cual no han de avanzar
// ya que nuestro criterio de ordenación
// es que la paridad sea distinta
if (($a + $b) % 2 ==0)
{
return 0;
}
// si tienen paridad distinta
// (esto lo sabemos porque su suma no da un numero par)
// si el primero es par lo ponemos hacia la izquierda
elseif(($a%2)==0)
{
return -1;
}
// el unico caso que queda es que el primero sea impar
// lo ponemos a la derecha
else
{
return 1;
}
}
$a = array(3, 2, 5, 6, 1, 7 , 8, 11, 12, 45, 34, 67,86, 76, 43, 44, 98, 340);
foreach ($a as $key => $value)
{
echo "$value\n";
}
usort($a, "cmp");
?>
<br />
<?
foreach ($a as $key => $value)
{
echo "$value\n";
}
?>
No sé si me he explicado bien, pero eso es lo que yo he entendido.
Un saludo.