Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/10/2010, 17:16
yoseman1
 
Fecha de Ingreso: octubre-2010
Mensajes: 19
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: como funciona usort

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.