Ver Mensaje Individual
  #4 (permalink)  
Antiguo 05/12/2007, 17:49
sauwi
 
Fecha de Ingreso: febrero-2005
Mensajes: 272
Antigüedad: 19 años, 2 meses
Puntos: 0
Re: Como ordenar array bidimensional

Te agradezco el apunte GatorV pero es que no logro entender lo que se hace aqui



Example#3 Ordenamiento de resultados de una base de datos

Para este ejemplo, cada elemento en la matriz datos representa una fila en una tabla. Este tipo de conjunto de datos es típico de los registros en una base de datos.

Datos de ejemplo:

volumen| edicion
-------+--------
67 | 2
86 | 1
85 | 6
98 | 2
86 | 6
67 | 7




Las datos como una matriz, llamada datos. Ésta se obtendría usualmente, por ejemplo, mediante un ciclo con mysql_fetch_assoc().
<?php
$datos[] = array('volumen' => 67, 'edicion' => 2);
$datos[] = array('volumen' => 86, 'edicion' => 1);
$datos[] = array('volumen' => 85, 'edicion' => 6);
$datos[] = array('volumen' => 98, 'edicion' => 2);
$datos[] = array('volumen' => 86, 'edicion' => 6);
$datos[] = array('volumen' => 67, 'edicion' => 7);
?>

En este ejemplo, ordenaremos por volumen descendientemente, y por edicion ascendentemente.

Tenemos una matriz de filas, pero array_multisort() requiere una matriz de columnas, así que usamos el código a continuación para obtener las columnas, y luego realizar el ordenamiento.
<?php
// Obtener una lista de columnas
foreach ($datos as $llave => $fila) {
$volumen[$llave] = $fila['volumen'];
$edicion[$llave] = $fila['edicion'];
}
// Ordenar los datos con volumen descendiente, edicion ascendiente
// Agregar $datos como el último parámetro, para ordenar por la llave común
array_multisort($volumen, SORT_DESC, $edicion, SORT_ASC, $datos);
?>

El conjunto de datos está ordenado ahora, y lucirá de este modo:

volumen| edicion
-------+--------
98 | 2
86 | 1
86 | 6
85 | 6
67 | 2
67 | 7


Donde se queda la matriz ordenada?
Como hago ahora el foreach para recorerr la matriz y obrener los datos?

Saludos
__________________
Barcode.es