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] Vider un tableau


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 82
    Points : 56
    Points
    56
    Par défaut [Tableaux] Vider un tableau
    Re bonjour,

    j'ai une boucle while dans laquelle je decoupe une chaine dans un tableau (grâce à la fonction split).

    Le tableau se nomme $mescolonnes

    Je souhaite vider mon tableau à la fin de la bouche while, pour qu'il recommence à l'indice 0

    j'ai essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    unset($mescolonnes);
    $mescolonnes=array();
    $mescolonnes="";
    Rien ne fonctionne, les indices s'incrémentent

    Le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while(!feof($fp)){
       $maligne=fread($fp,4096); 
       $mescolonnes=split(";", $maligne);
       //effacer tableau ???
     
    }
    Merci de votre aide, j'espère avoir été claire

  2. #2
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 82
    Points : 56
    Points
    56
    Par défaut
    si vous avez un moyen de contourner le problème, je suis preneuse

  3. #3
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Là je ne vois pas trop comment faire.

    Peut-être que si tu nous disais pourquoi tu veux vider le tableau, on pourrait te fournir une autre solution ?

    Pierre
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Actuellement, ta boucle écrase le tableau qui existait (ou n'existait pas) donc il n'y a pas besoin de s'en préoccuper davantage. Pourais-tu nous dire comment tu sais qu'il incrémente l'indice ?

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 82
    Points : 56
    Points
    56
    Par défaut
    En fait, je lis un fichier FIC1.txt
    dans ce fichiers, des informations séparées par des ";" sont prensentes
    Je dois faire des manipulations des données, en garder certaines.

    Donc à chaque ligne du FIC1.txt, je recupere la valeur de la ligne dans un tableau decoupe par les ";" grâce à la fonction split.

    Je recupere certaines valeurs du tableau (indice1, 2, 3, 6...)
    Ces valeurs, je les écris dans un autre fichier FIC2.txt

    Ce qui me donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $fp= fopen("FIC1.txt", "r"); 
    $fic_des= fopen("FIC2.txt", "w"); 
    while(!feof($fp)) {	
         $maligne=fread($fp,4096); // On récupère dans le fichier le contenu
         $mescolonnes=split(";", $maligne);
         //je simplifie pour vous
         $ligneAecrire="CAN;".$mescolonnes[1].$mescolonnes[2].";NOM;";
     
         fwrite($fic_des, $ligneAecrire."\n");
    }
    Le problème, c'est que le tableau $mescolonnes ne recommence pas a l'indice 0, mais mes valeurs se mettent à la suite.
    Du coup $ligneAecrire="CAN;".$mescolonnes[1].$mescolonnes[2].";NOM;"; ne fonctionne plus

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 82
    Points : 56
    Points
    56
    Par défaut
    j'ai mis un print_r($mescolonnes); au debut de ma boucle while

  7. #7
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Je viens de faire le test et effectivement les données s'empilent.

    J'ai beacuoup utilisé la fonction explode mais je n'avais jamais rencontré ce probleme d'indices persistant.

    C'est assez space.
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  8. #8
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Citation Envoyé par christel1982
    j'ai mis un print_r($mescolonnes); au debut de ma boucle while
    C'est merveilleux, dis donc


    Sérieusement, si cela ne commence pas à l'indice zéro, c'est pour une autre raison que ce que tu crois. Ton tableau est bel et bien écrasé (càd remplacé) à chaque itération et il commence très certainement à l'indice zéro, même si la valeur correspondante peut être vide suivant le cas.
    Pourrais-tu me donner un exemple de ligne de ton fichier, que je te le démontre ?

  9. #9
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Ca y est je viens de comprendre.

    le problème ne vient pas de split ou du tableau mais de la lecture des données.

    tu utilise fread, alors que je pense que dans ton cas fgets serait préférable, non ?

    Il y a une grande différence entre fread() et fgets() au niveau de la fin de la capture.

    Pierre
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  10. #10
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 82
    Points : 56
    Points
    56
    Par défaut :)
    Ah merci Pierre, t'es mon sauveur lol
    le problème venait bien de là

  11. #11
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Oui mais ce fut un peu long car j'ai un peu de mal le matin
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  12. #12
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Je suis arrivé à la même conclusion et à cette solution :

    fic.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Yogui;Kirkis;Barcelone
    christel;1982;Paris
    test.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
     
    $fp= fopen("fic.txt", "r");
    $file = file_get_contents('fic.txt');
    $lines = split("\n", $file);
    foreach($lines as $line){
       if(!empty($line)){
         $mescolonnes = split(";", $line);
         echo $ligneAecrire="<u>Nom</u> : ".$mescolonnes[0].' '.$mescolonnes[1]."<br /><u>Ville</u> :".$mescolonnes[2]."<br /><br />";
      }
    }
     
    ?>

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

Discussions similaires

  1. [Tableaux] Coloriser un tableau à partir de mon code
    Par pod1978 dans le forum Langage
    Réponses: 3
    Dernier message: 10/11/2005, 16h25
  2. Réponses: 11
    Dernier message: 09/11/2005, 13h59
  3. [Tableaux] submit un tableau de donnee
    Par naourass dans le forum Langage
    Réponses: 6
    Dernier message: 09/11/2005, 10h05
  4. [Tableaux] tri de tableau
    Par rdams dans le forum Langage
    Réponses: 19
    Dernier message: 08/11/2005, 13h46
  5. Réponses: 3
    Dernier message: 26/09/2005, 22h24

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