Foros del Web » Programando para Internet » PHP »

Ordenar array multidimensional

Estas en el tema de Ordenar array multidimensional en el foro de PHP en Foros del Web. Hola: He estado mirando en la web, y habia ya varios temas sobre esto, pero en ninguno me dan con la solucion. Yo tengo un ...
  #1 (permalink)  
Antiguo 09/03/2009, 18:53
 
Fecha de Ingreso: marzo-2008
Mensajes: 197
Antigüedad: 16 años, 1 mes
Puntos: 3
Ordenar array multidimensional

Hola:
He estado mirando en la web, y habia ya varios temas sobre esto, pero en ninguno me dan con la solucion.
Yo tengo un array tal qeu asi (pero con más datos):

Código PHP:
Array
(
    [
0] => Array
        (
            [
0] => 0
            
[1] => house
            
[2] => casa
        
)
.
.
.

Y quiero ordenarlo por una de las dos palabras, es decir, o por array[0][1] o por array[0][2], me da =.

Y lo intento de esta manera, pero no me sale:

Código PHP:
function compara($a$b
  { 
      return (
strcasecmp($a[0],$b[0]));
  }
  
usort($this->miarray"compara"); 
Alguien sabe como puedo ordenar este array.

Muchas gracias de antemano
  #2 (permalink)  
Antiguo 09/03/2009, 20:11
 
Fecha de Ingreso: marzo-2009
Mensajes: 12
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Ordenar array multidimensional

Hola, para hacer ese ordenamiento te recomiendo usar la funcion array_multisort, al principio puede ser un poco confusa pero luego que la usas varias veces es genial. Ademas, es tan poderosa casi como el ORDER BY de SQL.

Ejemplo:
Código PHP:
$datos[] = array(0'house''casa');
$datos[] = array(1'acero''plomo'); 

foreach (
$datos as $key => $fila) {
            
$col1[$key]  = $fila[1]; // columna de house
            
$col2[$key] = $fila[2]; //columna de casa
        
}

//ordenamos ascendente por la columna house
array_multisort($col1SORT_ASC$datos);
print_r($datos); 
En el ejemplo anterior tenemos un array como el que tu estás manejando, la idea es poner las columnas que te interesan ordenar en arrays independientes.
Dentro del foreach ponemos en $col1 los valores de la columna house, es decir, "house" y "acero"; luego a la funcion array_multisort le pasamos la columna por la que queremos ordenar (en el ejemplo es house), si es ascendente o descendente y finalmente el array original donde podemos ver el resultado.

Ahora tenemos el array $datos ordenado por la columna house.

espero que te sirva, saludos, Juan.
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 03:35.