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 :

Le passage d'une variable dans la boucle for ne se fait pas


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 557
    Par défaut Le passage d'une variable dans la boucle for ne se fait pas
    Bonjour,

    j'ai un petit problème avec une fonction ou la syntaxe, je ne sais pas.

    j'ai un fichier qui contient 1589 lignes et je voudrais mettre les infos dans une bdd,

    dans ma boucle for, lorsque je mets pour i = 1 à 1589, pas de problème.

    Mais lorsque je remplace le nombre 1589 par la fonction count :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $nbLignes=file('bdd.txt'); 
    echo "Nombre de lignes : ".count($nbLignes)."</br></br>"; 
     
    // ça affiche bien 1589
     
    for ($i = 1 ; $i <= $nbLignes ; $i++){...}   // (si je mets 1589 à la place de $nbLignes, ça marche)
    et j'ai cette erreur si je mets $nbLignes comme limite du compteur.

    "Notice: Undefined offset: 1 in C:\.... on line 83"

    J'ai besoin de cette fonction, car le nombre de lignes du fichier peut varier.

  2. #2
    Membre éclairé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 557
    Par défaut
    en fait je crois que c'est un conflit de types. Je vais essayer de parser en int.

  3. #3
    Membre éclairé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 557
    Par défaut
    Il semblerait que ça marche en mettant directement la fonction dans le compteur, count($nbLignes).

    Mais ça ne m'explique pas pourquoi si je passe le résultat de la fonction dans une variable et que je mets la variable dans la boucle, ça ne marche plus.

    J'ai essayé de parser avec la fonction intval

    $nbLignes2=intval($nbLignes);

    il n'y a plus d'erreur, mais il n'y a aucun résultat non plus.

    Bref j'ai un résultat mais j'aimerais bien comprendre, donc j'attends un peu avant de mettre "résolu".

  4. #4
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Quand tu patauge un peu comme ça, réfère toi à la doc officielle Php.

    Exemple avec file


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    // Lit une page web dans un tableau.
    $lines = file ('http://www.example.com/');
     
    // Affiche toutes les lignes du tableau comme code HTML, avec les numéros de ligne
    foreach ($lines as $line_num => $line) {
        echo 'Ligne No <strong>' . $line_num . '</strong> : ' . htmlspecialchars($line) . '<br />'."\n";
    }
     
    // Un autre exemple, pour obtenir une page web dans une chaîne. Voir aussi la fonction file_get_contents().
    $html = implode ('', file ('http://www.example.com/'));
    [/CODE]
    ?>

    array file ( string filename , int use_include_path , resource context )
    La fonction retourne un tableau (et non pas le nombre de ligne), et chaque élément du tableau correspond à une ligne.

    Pour obtenir le nombre de ligne faudrait normalement faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $bdd = file('bdd.txt');
    $nbLignes = count($bdd);
    //
    for ($i = 0; $i < $nbLignes; $i++) {
        echo 'ligne '.($i + 1).' - '.$bdd[$i].'<br />';
    }
    Ceci dit, si c'est pour parcourir le fichier, il y a plus simple:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $handle = @fopen("/tmp/inputfile.txt", "r");
    if ($handle) {
       while (!feof($handle)) {
          $buffer = fgets($handle, 4096);
          echo $buffer;
       }
       fclose($handle);
    }
    ?>

  5. #5
    Membre éclairé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 557
    Par défaut
    exact exact merci, c'est ce que j'ai fait.

    mais lorsqu'on cherche une fonction déjà existante et qu'on ne sait pas son nom, c'est pas toujours évident.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/01/2014, 00h51
  2. Creer des variables dans un boucle for
    Par zentro dans le forum Général Python
    Réponses: 2
    Dernier message: 06/04/2008, 07h22
  3. Passage d'une variable dans une procédure
    Par Sakapatate dans le forum Langage
    Réponses: 19
    Dernier message: 03/06/2007, 10h22
  4. passage d'une variable dans un formulaire
    Par porco dans le forum Langage
    Réponses: 1
    Dernier message: 14/04/2007, 13h08
  5. passage d'une variable dans une frame
    Par Atchoum_002 dans le forum Langage
    Réponses: 2
    Dernier message: 17/10/2005, 17h06

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