Ver Mensaje Individual
  #8 (permalink)  
Antiguo 21/01/2014, 10:44
Avatar de jonni09lo
jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: ordenando multiarray manteniendo clave (key)

Te aconsejo que siempre que preguntes algo des los datos lo mas reales posibles. Si hubieses leído el manual de array_multisort hubieras visto que:

Cita:
Las llaves asociativas (string) se mantendrán, aunque las llaves numéricas son re-indexadas.
Por ello te di mi respuesta teniendo en cuenta lo que tu mostraste (arrays con llaves asociativos)

Lo que tu pretendes hacer lo puedes hacer de esta manera (idea sacada de aquí http://php.net/asort#71318 ):

Código PHP:
Ver original
  1. function record_sort($records, $field, $reverse=false)
  2. {
  3.     $hash = array();
  4.    
  5.     foreach($records as $record)
  6.     {
  7.         $hash[$record[$field]] = $record;
  8.     }
  9.    
  10.     ($reverse)? krsort($hash) : ksort($hash);
  11.    
  12.     $new_records = array();
  13.    
  14.     foreach($hash as $record)
  15.     {
  16.         $clave = array_search( $record, $records );
  17.         $new_records[$clave] = $record;
  18.     }
  19.    
  20.     return $new_records;
  21. }
  22.  
  23. $SENS = array (
  24.     3  => array('Press' => 117.81, 'Temp' => 37, 'Batt'=>87.4016),
  25.     4  => array('Press' => 116.65, 'Temp' => 38, 'Batt'=>86.6142),
  26.     6  => array('Press' => 123.54, 'Temp' => 41, 'Batt'=>86.6142),
  27.     10 => array('Press' => 127.16, 'Temp' => 80, 'Batt'=>82.6772),
  28.     14 => array('Press' => 125.75, 'Temp' => 77, 'Batt'=>83.4646),
  29.     1  => array('Press' => 127.14, 'Temp' => 40, 'Batt'=>86.6142),
  30.     5  => array('Press' => 119.11, 'Temp' => 42, 'Batt'=>86.6142),
  31.     9  => array('Press' => 129.28, 'Temp' => 79, 'Batt'=>64.567),
  32.     13 => array('Press' => 123.51, 'Temp' => 71, 'Batt'=>81.1024),
  33.     11 => array('Press' => 122.25, 'Temp' => 72, 'Batt'=>82.6772),
  34.     2  => array('Press' => 124.72, 'Temp' => 40, 'Batt'=>87.4016),
  35. );
  36.  
  37. $arrHig = record_sort($SENS, "Press");
  38.  
  39. echo "<pre>";
  40. print_r($arrHig);
  41. echo "</pre>";

Para ordenar en orden descendente debes de poner true el tercer parámetro de la función

PD: Ya te tocaría idear una manera de ordenar por dos o más columnas, si puedo luego lo trato de hacer

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.