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 :

[Tableaux] file() et array_unique() [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut [Tableaux] file() et array_unique()
    Bonjour,

    voila j'ai un fichier .txt de personnes avec certaines infos les concernants, qui est sensé se présenté comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Bébé         Cadum      M    BB
    Jean-Claude  Dusse      M    JD
    Jack         Bauer      M    DU
    Luck         SkyWalker  M    DU
    Raquel       Welch      F    JN
    Jean-Claude  Dusses      M    JD
    Bébé         Cadum      M    BB
    Jack         Bauer      M    DU
    Luck         SkyWalkere  M    DU

    Je veux le récupérer et le dédoublonner, pour cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $array_lignes = file ( $path_complet_file );
    //je commence par dédoublonner
    $array_lignes = array_unique($array_lignes);
    Et bien mon problème, c'est qu'il ne prend pas en compte la dernière ligne:
    Luck SkyWalkere M DU lorsqu'il le dédoublonne..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    0 Bébé Cadum M BB
    1 Jean-Claude Dusse M JD
    2 Jack Bauer M DU
    3 Luck SkyWalker M DU
    4 Raquel Welch F JN
    5 Jean-Claude Dusses M JD
    Quelqu'un aurai til une idée pour résdoudre ce problème?

    Merci

  2. #2
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    Il y a Dusse et Dusses (avec un S à la fin)

    ça serait pas ça le problème ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    Ben apparement non puisque cette différence est bien prise en compte et donc il considere bien qu'il se s'agit pas de la meme ligne...

    non le problème vient bien de la dernière ligne du fichier, je n'ai pas vraiment d'idée pourquoi...

  4. #4
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    as-tu bien mis un retour à la ligne à la fin de ton fichier texte ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    ca ne change rien, le probleme est le meme...

  6. #6
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Bonjour,

    J'ai repris ton fichier texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Bébé         Cadum      M    BB
    Jean-Claude  Dusse      M    JD
    Jack         Bauer      M    DU
    Luck         SkyWalker  M    DU
    Raquel       Welch      F    JN
    Jean-Claude  Dusses      M    JD
    Bébé         Cadum      M    BB
    Jack         Bauer      M    DU
    Luck         SkyWalkere  M    DU
    J'ai repris ton script en ajoutant ce qu'il fallait pour vérifier tes dires :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $array_lignes = file ("test.txt");
    echo "Avant :<br/>";
    foreach ($array_lignes as $val) {
    	echo $val."<br/>";
    }
    //je commence par dédoublonner
    echo "<br/>";
    echo "Après :<br/>";
    $array_lignes = array_unique($array_lignes);
    foreach ($array_lignes as $val) {
    	echo $val."<br/>";
    }
    Et je n'ai constaté aucun dysfonctionnement :
    Avant :
    Bébé Cadum M BB
    Jean-Claude Dusse M JD
    Jack Bauer M DU
    Luck SkyWalker M DU
    Raquel Welch F JN
    Jean-Claude Dusses M JD
    Bébé Cadum M BB
    Jack Bauer M DU
    Luck SkyWalkere M DU

    Après :
    Bébé Cadum M BB
    Jean-Claude Dusse M JD
    Jack Bauer M DU
    Luck SkyWalker M DU
    Raquel Welch F JN
    Jean-Claude Dusses M JD
    Luck SkyWalkere M DU

    Deux solutions :
    1 - C'est plutôt lorsque tu utilises ton tableau dédoublonné que tu oublies le dernier élément, ton problème est ailleurs.
    2 - Je n'ai pas compris le problème, oublie tout ce que j'ai écrit ci-dessus.

    Fred

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    Ah effectivement ton code fonctionne !

    C'est bizzard, en fait moi pour l'afficher, j'utilisais une boucle for comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for($i=0; $i < count($array_lignes); $i++)
    {
    	echo "<br />".$i." ".$array_lignes[$i];
    }
    Quelqu'un peut-il me dire en quoi cela est different de l'utilisation avec foreach??

    Merci en tout cas!

  8. #8
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Ton tableau de départ ressemble à ça :
    $array_lignes[0]=Bébé Cadum M BB
    $array_lignes[1]=Jean-Claude Dusse M JD
    $array_lignes[2]=Jack Bauer M DU
    $array_lignes[3]=Luck SkyWalker M DU
    $array_lignes[4]=Raquel Welch F JN
    $array_lignes[5]=Jean-Claude Dusses M JD
    $array_lignes[6]=Bébé Cadum M BB
    $array_lignes[7]=Jack Bauer M DU
    $array_lignes[8]=Luck SkyWalkere M DU
    Le dédoublonnement supprime les doubles donc ensuite tu as ça :
    $array_lignes[0]=Bébé Cadum M BB
    $array_lignes[1]=Jean-Claude Dusse M JD
    $array_lignes[2]=Jack Bauer M DU
    $array_lignes[3]=Luck SkyWalker M DU
    $array_lignes[4]=Raquel Welch F JN
    $array_lignes[5]=Jean-Claude Dusses M JD
    $array_lignes[8]=Luck SkyWalkere M DU
    Il contient 7 éléments
    et comme tu affiches tous les éléments jusqu'à l'indice <7,
    tu n'affiche pas le dernier.

    Alors qu'en utilisant foreach,
    pas besoin de connaître la valeur des indices,
    tu affiches tous les éléments du tableau qui ont une valeur.

    Fred

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    Ok merci beaucoup pour ta réponse!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tableaux] précisions sur array_unique
    Par dimebagplan dans le forum Langage
    Réponses: 3
    Dernier message: 06/02/2009, 14h10
  2. [Tableaux] pb avec array_unique()
    Par Mat_DZ dans le forum Langage
    Réponses: 2
    Dernier message: 10/04/2007, 10h41
  3. [Tableaux] Bug dans array_unique, ou éléphant ?
    Par Herode dans le forum Langage
    Réponses: 2
    Dernier message: 11/07/2006, 10h24
  4. Réponses: 2
    Dernier message: 09/02/2006, 18h20

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