Foros del Web » Programando para Internet » PHP »

ordenacion por usort()

Estas en el tema de ordenacion por usort() en el foro de PHP en Foros del Web. Hola. Este script está por todas partes para ilustrar qué hace usort(). Pues yo no lo entiendo. ¿Qué es $b en la función cmp() ? ...
  #1 (permalink)  
Antiguo 01/04/2012, 14:20
 
Fecha de Ingreso: marzo-2012
Mensajes: 45
Antigüedad: 12 años, 8 meses
Puntos: 0
ordenacion por usort()

Hola. Este script está por todas partes para ilustrar qué hace usort(). Pues yo no lo entiendo.

¿Qué es $b en la función cmp() ?

¿Y si se trata de un array bidimensional y quiero ordenar por el segundo índice?

Gracias y saludos

<?php
function cmp($a, $b)
{
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}

$a = array(3, 2, 5, 6, 1);

usort($a, "cmp");

foreach ($a as $clave => $valor) {
echo "$clave: $valor\n";
}
?>
  #2 (permalink)  
Antiguo 01/04/2012, 20:34
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 3 meses
Puntos: 214
Respuesta: ordenacion por usort()

<saludos>
El parámetro a y b son los valores que se van a comparar,
es decir, allí se envían de una vez una pareja de parámetros
a ser comparados, en este caso posiciones del arreglo.
En tu caso, si solo lo usas para eso, mejor usa sort.

En el caso que uses varias dimensiones, entonces seria llamar
a dicha función recorriendo las posiciones del segundo índice
primero y luego las del primer índice si se quiere ordenar por
ambas dimensiones, en caso contrarío solo recorriendo
el segundo índice.
</saludos>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Última edición por mortiprogramador; 01/04/2012 a las 20:35 Razón: falto el color
  #3 (permalink)  
Antiguo 02/04/2012, 05:19
 
Fecha de Ingreso: marzo-2012
Mensajes: 45
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: ordenacion por usort()

Cita:
Iniciado por mortiprogramador Ver Mensaje
<saludos>
El parámetro a y b son los valores que se van a comparar,
es decir, allí se envían de una vez una pareja de parámetros
a ser comparados, en este caso posiciones del arreglo.
En tu caso, si solo lo usas para eso, mejor usa sort.

En el caso que uses varias dimensiones, entonces seria llamar
a dicha función recorriendo las posiciones del segundo índice
primero y luego las del primer índice si se quiere ordenar por
ambas dimensiones, en caso contrarío solo recorriendo
el segundo índice.
</saludos>
Muchas gracias por tu respuesta pero sigo sin entenderlo.
Quiero decir...
Dices que $a y $b son los parámetros que se van a comparar, deacuerdo, es lo que se llama en programación los parámetros formales de una función, pero ¿donde están los parámetros locales?, es decir, los parámetros de la función llamante ??.

Si se invoca a la función cmp ($a, $b) o a cualquier otra función, hay que pasarle esos dos parámetros ¿no? y no veo la llamada con los parámetros.

Gracias de nuevo
Saludos
  #4 (permalink)  
Antiguo 02/04/2012, 23:05
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 3 meses
Puntos: 214
Respuesta: ordenacion por usort()

de nada, Pues si quieres llamarlos formales, ok, para mi son parámetros.
Y pues si de programación hablamos, para que volver a llamar la función cmp
con los parámetros si ya están enviados? para eso es que se usa la
sobrecarga de funciones, y por ende tan solo es necesario
hacer el llamado a la función, y ella entenderá que ya le
están invocando con los parámetros que a su vez le envían
desde donde le llaman, esto porque es una función dentro de otra.


Cita:
Iniciado por javiinet Ver Mensaje
Muchas gracias por tu respuesta pero sigo sin entenderlo.
Quiero decir...
Dices que $a y $b son los parámetros que se van a comparar, deacuerdo, es lo que se llama en programación los parámetros formales de una función, pero ¿donde están los parámetros locales?, es decir, los parámetros de la función llamante ??.

Si se invoca a la función cmp ($a, $b) o a cualquier otra función, hay que pasarle esos dos parámetros ¿no? y no veo la llamada con los parámetros.

Gracias de nuevo
Saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: ordenacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:16.