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] Problème avec array_push()


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Par défaut [Tableaux] Problème avec array_push()
    Bonjour à tous,
    J'ai un petit soucis avec la fonction array_push. Lorsque je l'utilise, mon tableau est désespérement vide...

    J'ai pour but de récupérer tous les noms des dossiers et sous dossiers contenus dans $chemin et de les mettre dans un tableau.
    Voila le code de ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    $array_file = array();
    function lister($chemin)
    {
       $nom_repertoire = $chemin;
       $pointeur = opendir($nom_repertoire);
       while ($fichier = readdir($pointeur))
       {
          if(($fichier != ".") && ($fichier != ".."))
          {
             //si c'est un dossier, on le lit
             if (is_dir($nom_repertoire."/".$fichier))
             {
                echo $nom_repertoire."/".$fichier."<br>";
    	    array_push($array_file,$nom_repertoire."/".$fichier);
     
    	    // récursivité
    	    lister($nom_repertoire."/".$fichier);
             }
          }
       }
       closedir($pointeur);
    }
    lister("./images");
    print_r($array_file);
    le echo $nom_repertoire.'/'.$fichier.'<br>'; m'affiche bien tous les noms des répertoires alors que le array_push($array_file,$nom_repertoire.'/'.$fichier); juste en dessous ne met rien dans mon tableau...

    Quelqu'un aurait il une idée? Merci de votre aide.

  2. #2
    Fabouney
    Invité(e)
    Par défaut
    bonjour,

    essay de mettre ca a la place ta fonction "array_push()":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $array_file[]="$nom_repertoire/$fichier";
    Cordialement.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Par défaut
    J'avais déjà testé cette solution mais je viens de le faire et le résultat est le meme... il n'y a rien dans array_file quand je l'affiche avec print_r().

    Je comprends vraiment pas ce qu'il se passe surtout que le echo m'affiche bien le résultat que je souhaite.

  4. #4
    Membre expérimenté
    Avatar de dam_moreyllo
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 251
    Par défaut
    Bonjour !
    C'est tout à fait normal que ça marche pas puisque dans ta fonction tu modifie une variable locale de $array_file et non celle que tu a déclaré auparavant.
    Il faut donc que tu fasse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function lister($chemin)
    {
       $array_file = array();
       ...
       closedir($pointeur);
       return $array_file
    }
    $array_file = lister("./images");
    print_r($array_file);

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Par défaut
    En effet, ta méthode répond à ma question mais que partiellement...
    Maintenant j'ai bien dans mon array_file des données mais pas toutes!

    Explications : (Exemple de mon dossier ./images)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    dossier1
      dossier1-1
      dossier1-2
    dossier2
      dossier2-1
      dossier2-2
      dossier3-3
    dossier3
    dossier4
    etc...
    Dans le array_file je ne récupère que les dossiers de 1er niveau (dossier1, dossier2, dossier3, etc...) mais pas ceux étant dedans
    J'vais devenir fou!

  6. #6
    Membre émérite
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Par défaut
    normal, appels récursifs, redéclaration d'une variable locale à chaque appel donc à chaque changement de niveau dans l'arbrorescence

    comme c'est récursif, tu appelles ta fonction, elle traite dossier1, met l'appel récursif dans la file, traite dossier2, met l'appel récursif dans la file, traite...3...file

    donc t'obtiens les dossiers 1, 2 et 3, les variables stockant le contenu de ces dossiers ont été perdues

    essaie avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $array_file = array();
    function lister($chemin)
    {
      global $array_file;
      // ...
    }
    Dia [ Page DVP ] [ Site pro ]

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

Discussions similaires

  1. [Tableaux] Problème avec utf8_encode()
    Par RapidJul dans le forum Langage
    Réponses: 1
    Dernier message: 12/10/2005, 18h22
  2. [Tableaux] Problème avec array_multisort
    Par ecocentric dans le forum Langage
    Réponses: 5
    Dernier message: 27/09/2005, 14h56
  3. [Tableaux] Problème avec les boucles
    Par speed_man002 dans le forum Langage
    Réponses: 4
    Dernier message: 21/09/2005, 15h42
  4. [Tableaux] problème avec while
    Par zimotep dans le forum Langage
    Réponses: 3
    Dernier message: 11/09/2005, 10h30
  5. [Tableaux] Problème avec Switch case
    Par philippef dans le forum Langage
    Réponses: 4
    Dernier message: 07/09/2005, 16h37

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