Foros del Web » Programando para Internet » PHP »

ordenar array obtenido con file();. Es posible ??

Estas en el tema de ordenar array obtenido con file();. Es posible ?? en el foro de PHP en Foros del Web. Hola a todos ! a ver si alguien me puede ayudar a ordenar un array obtenido del siguiente modo: lo datos serían tipo : nombre:url:descripcion:clicks:(en ...
  #1 (permalink)  
Antiguo 08/02/2006, 18:20
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba
Mensajes: 36
Antigüedad: 21 años, 10 meses
Puntos: 0
Pregunta ordenar array obtenido con file();. Es posible ??

Hola a todos !

a ver si alguien me puede ayudar a ordenar un array obtenido del siguiente modo:

lo datos serían tipo :

nombre:url:descripcion:clicks:(en números)

$array = file("favoritos.txt");
for ($i = 0; $i<count($array); $i++){
$datos = explode(":", $array[$i]);
echo "<a href='$datos[1]' title='$datos[2]'>$datos[0]</a>";
}

Y aquí me quedo, no tengo ni idea de cual puede ser el metodo o de como se puede hacer


La cuestion sería ordenar 10 líneas en función de los clicks. Se que es mejor mysql pero solo lo necesito para una cosa que no tiene la menor importancia y así me viene mejor.


Gracias de antemano.
__________________
Aprender es duro, no aprender lo es más aún .
  #2 (permalink)  
Antiguo 08/02/2006, 20:22
 
Fecha de Ingreso: diciembre-2005
Mensajes: 122
Antigüedad: 18 años, 11 meses
Puntos: 0
Código:
$orden = array();
$array = file("favoritos.txt");

for ($i = 0, $n = count( $array); $i < $n; $i++){
    $datos = explode( ':', $array[$i] );
    
    for ( $j = 0, $m = count( $orden ); $j < $m; $j++ )
    {
         if ( $datos[3] > $orden[$j][3] )
         {
              for( $k = $m; $k > $j; $k--)
              {
                   $orden[$k] = $orden[$k - 1];
              }
              $orden[$j] = $datos;
              break;
         }
    }

    $orden[] = $datos;
}
  #3 (permalink)  
Antiguo 08/02/2006, 21:17
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 11 meses
Puntos: 1
¿por qué reinventar la rueda?

PHP dispone de una maravillosa función que ordena matrices multidimencionales tan fácil como hacer un order by cuando usamos MySQL.

Para probar el código, hice un archivo como el que quieres abrir tú, le llamé favoritos.txt

Código:
Ismael:www.bezares.net:Página práctica de cómo hacer cosas:32
Julio:www.julio.com:Página práctica de cómo hacer cosas:45
Armando:www.armando.com:Página práctica de cómo hacer cosas:222
Roberto:www.roberto.com:Página práctica de cómo hacer cosas:3234
Rocko:www.rocko.com:Página práctica de cómo hacer cosas:23
Carlos:www.carlos.com:Página práctica de cómo hacer cosas:32
Yariela:www.yariela.com:Página práctica de cómo hacer cosas:11
Azalia:www.azalia.com:Página práctica de cómo hacer cosas:1
Y ahora, no hay más que abrirlo con el código que Words_in_lam ya hizo, nada más una simple modificación se hace y UNA SOLA FUNCIÓN HACE TODO EL TRABAJO !!

Código PHP:
$array file("favoritos.txt");
for (
$i 0$i<count($array); $i++)
  {
   
$datos explode(":"$array[$i]);

   
//la función requiere separar en columnas
   
$nombre[$i]=$datos[0];
   
$url[$i]=$datos[1];
   
$descripcion[$i]=$datos[2];
   
$clicks[$i]=$datos[3];
  }

//UNA SOLA FUNCIÓN HIZO TODO EL TRABAJO !!
array_multisort($clicksSORT_DESCSORT_NUMERIC$nombre$url$descripcion);

//el resultado
for ($i 0$i<count($array); $i++)
   echo 
"<a href='http://$url[$i]' title='$descripcion[$i]'>$nombre[$i]</a> Clicks: $clicks[$i]<br/>\n"
Se imprime lo siguiente:

Código:
Roberto Clicks: 3234 
Armando Clicks: 222 
Julio Clicks: 45 
Carlos Clicks: 32 
Ismael Clicks: 32 
Rocko Clicks: 23 
Yariela Clicks: 11 
Azalia Clicks: 1
Y todo con una función. Lo padre de esto es que si quisieras el orden Ascendente, sólo cambias por SORT_ASC y con esa misma facilidad ordenas por URL, por Nombre, por Clicks, por Descripción, etc, etc.
  #4 (permalink)  
Antiguo 09/02/2006, 00:22
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba
Mensajes: 36
Antigüedad: 21 años, 10 meses
Puntos: 0
De acuerdo

Muchas pero que muchisimas gracias !

Ahora no puedo probarlo pero ya les cuento como me ha ido cuando lo haga. No encontraba nada relacionado con esto en ningun sitio.

Un saludo !!
__________________
Aprender es duro, no aprender lo es más aún .
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 14:13.