IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

lire un csv de la fin vers le début


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    410
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 410
    Points : 90
    Points
    90
    Par défaut lire un csv de la fin vers le début
    Bonjour,

    Voilà j'ai un code actuellement qui marche et qui me permet de lire un fichier csv (enfin c'est un .txt mais structuré comme un csv avec comme séparateur entre chaque colonne une tabulation
    Comment pourrais-je lire ce fichier en partant de la fin ? Mon fichier est affiché de la date la plus récente à la date la plus ancienne et je dois le traiter à l'inverse donc il faudrait inverser le sens de lecture (la dernière ligne est la première ligne à être lu, de la dernière à la première). Est-ce que vous auriez une idée ? J'ai trouvé une fonction php array_inverse() qui fait celà mais pour un tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $handle = fopen("1.txt", "rb");
    while (($data = fgetcsv($handle, 1000, "\t")) !== FALSE) {
    // ici mes traitements sur chaque ligne du fichier
    }
    Dans ce cas ci-dessus je lis bien de la première ligne à la dernière alors que je dois faire le contraire

  2. #2
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour,

    Je ne comprends pas tout, lorsque lit le csv, tous les champs se retrouvent dans un tableau, donc l'inverser revient à lire le fichier à l'envers

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Je ne sais pas si c'est la meilleure solution, mais c'en est une :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
      //-- lecture du fichier et retour dans un tableau ----------------------
      $tableau = file('1.txt', FILE_IGNORE_NEW_LINES);
      //-- inversion du tableau ----------------------------------------------
      $result = array_reverse($tableau);
      //-- mise du tableau dans une chaine -----------------------------------
      $chaine = implode("\r\n", $result);
      //-- écriture de la chaine dans le fichier -----------------------------
      file_put_contents('test.txt', $chaine);
      //-- ensuite, lecture normale du fichier -------------------------------
     ?>

Discussions similaires

  1. [MySQL] sql:afichage du résultat de la fin vers le début
    Par hammag dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/05/2009, 15h02
  2. Réponses: 4
    Dernier message: 03/08/2008, 20h24
  3. Lire un CSV et répartir les données
    Par Titouf dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 26/10/2006, 14h16
  4. défilement sans fin vers la gauche
    Par floirac dans le forum Flash
    Réponses: 4
    Dernier message: 28/08/2006, 22h22
  5. parcourir une liste de la fin vers le début
    Par zdra dans le forum SL & STL
    Réponses: 12
    Dernier message: 06/02/2005, 18h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo