Foros del Web » Programando para Internet » PHP »

Ordenamiento de datos según un patrón

Estas en el tema de Ordenamiento de datos según un patrón en el foro de PHP en Foros del Web. a ver si me pueden ayudar , tengo una serie de datos en un txt normal por ejemplo : Cita: dato0 dato1 dato2 dato3 dato4 ...
  #1 (permalink)  
Antiguo 12/08/2011, 20:43
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 17 años
Puntos: 20
Exclamación Ordenamiento de datos según un patrón

a ver si me pueden ayudar , tengo una serie de datos en un txt normal por ejemplo :

Cita:
dato0
dato1
dato2
dato3
dato4

Todos separados por un salto de linea \n

Dado un patrón de ordenamientoqeu yo dispusiese por ejemplo 1,3,2,0,4

Como podría hacer para que se mostrasen estos elementos en el orden de referencia que dispongo , muchas gracias , saludos
  #2 (permalink)  
Antiguo 12/08/2011, 20:46
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Ordenamiento de datos según un patrón

Obten el contenido con la funcion file() que te devuelve un array donde cada elemento es una linea.
Luego dado tu ordenamiento, puedes simplemente obtener ese indice del array.
  #3 (permalink)  
Antiguo 12/08/2011, 21:05
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 17 años
Puntos: 20
Respuesta: Ordenamiento de datos según un patrón

Si no te es mucha molestia podrías ponerme un ejemplo para darme cuenta , muchas gracias , saludos
  #4 (permalink)  
Antiguo 12/08/2011, 21:08
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Ordenamiento de datos según un patrón

Código PHP:
Ver original
  1. <?php
  2.  
  3. $archivo = 'archivo.txt';
  4. $lineas = file($archivo);
  5. natsort($lineas);
  6.  
  7. foreach ($lineas as $line) {
  8.     echo $line . '<br />';
  9. }

$lineas es un array muestralos como quieras...
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 12/08/2011, 21:18
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 17 años
Puntos: 20
Respuesta: Ordenamiento de datos según un patrón

Si gracias por el código pero el tema de sort lo conozco sería un ordenamiento en la secuencia dada no el tipo de ordenamiento natsort sino en la secuencia que yo marque , no se como podría hacerse , gracias de nuevo por tu ayuda
  #6 (permalink)  
Antiguo 12/08/2011, 21:23
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Ordenamiento de datos según un patrón

Ps tienes un array muestras c/u con su indice numérico en el orden que quieras. $lineas[1] $lineas[4] etc...
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #7 (permalink)  
Antiguo 12/08/2011, 21:27
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 17 años
Puntos: 20
Respuesta: Ordenamiento de datos según un patrón

Ok gracias a ver como lo aplico , saludos
  #8 (permalink)  
Antiguo 12/08/2011, 22:23
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 17 años, 1 mes
Puntos: 80
Respuesta: Ordenamiento de datos según un patrón

Hola, no se si te entendí bien lo que quieres hacer, pero aqui tienes un ejemplo...
Código PHP:
Ver original
  1. <?php
  2. $datos          = array('cero0', 'uno1', 'cuatro4', 'trece13', 'cinco5');
  3. $patron         = '/(\D+)(\d)/';
  4. $patronOrden    = array(5,13,4,0,1);
  5.  
  6. $final          = array_combine(preg_replace($patron, '\2',  $datos) , $datos );
  7.  
  8. $ordenado = array();
  9. foreach($patronOrden as $valor ) {
  10.     $ordenado[] = $final[$valor];
  11. }
  12.  
  13. echo '<pre>';
  14. var_dump($ordenado);
  15. echo '</pre>';

El resultado seria:
Código PHP:
Ver original
  1. array(5) {
  2.   [0]=>
  3.   string(6) "cinco5"
  4.   [1]=>
  5.   string(7) "trece13"
  6.   [2]=>
  7.   string(7) "cuatro4"
  8.   [3]=>
  9.   string(5) "cero0"
  10.   [4]=>
  11.   string(4) "uno1"
  12. }

Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #9 (permalink)  
Antiguo 13/08/2011, 00:51
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Ordenamiento de datos según un patrón

Bueno hay varias formas de hacer eso, si tienes PHP 5.2+ esto te sirve perfectamente:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $lineas = file('archivo.txt');
  4. $patron = array(1, 3, 2, 0, 4);
  5.  
  6. foreach ($lineas as $l) {
  7.     $orden[filter_var($l, FILTER_SANITIZE_NUMBER_INT)] = $l;
  8. }
  9.  
  10. foreach ($patron as $p) {
  11.     echo $orden[$p] . '<br />';
  12. }
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #10 (permalink)  
Antiguo 13/08/2011, 05:45
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Ordenamiento de datos según un patrón

No seria necesario siquiera guardar el orden en un nuevo array, lo puedes hacer con un solo foreach.
  #11 (permalink)  
Antiguo 13/08/2011, 11:18
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Ordenamiento de datos según un patrón

Cita:
Iniciado por Ronruby Ver Mensaje
No seria necesario siquiera guardar el orden en un nuevo array, lo puedes hacer con un solo foreach.
También me gustaría conocer tu forma de hacer este ejercicio.

Tal vez así?

Código PHP:
Ver original
  1. <?php
  2.  
  3. $l = array('dato0','dato2','dato4','dato3','dato1');
  4. $patron = array(1, 3, 2, 0, 4);
  5. $l = array_combine(filter_var_array($l, FILTER_SANITIZE_NUMBER_INT), $l);
  6.  
  7. foreach ($patron as $p) {
  8.     echo $l[$p] . '<br />';
  9. }
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 13/08/2011 a las 12:57

Etiquetas: ordenamiento
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 11:57.