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 :

Créer un tableau dynamiquement


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 118
    Par défaut Créer un tableau dynamiquement
    Bonjour,
    Petite question peut être idiote mais bon je tente !
    comment créer un tableau dynamiquement depuis un arborescence de fichiers.

    dossier_racine
    -> soudossier1
    -> fichier 2 sousdossier1
    -> sousdossier2
    -> fichier 1 sousdossier2
    -> fichier 2 sousdossier2

    pour l'instant j'ai ceci :
    Array
    (
    [dossier1] => img_test.jpg
    [dossier2] => img_test2.jpgimg_test3.jpg
    )


    et je voudrais ce résultat :
    Array
    (
    [dossier1] => Array
    (
    [0] => img_test.jpg
    )

    [dossier2] => Array
    (
    [0] => img_test2.jpg
    [1] => img_test3.jpg
    )

    )


    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
    26
    27
    28
    29
    30
     
    $tab_dossiers = array("dossier1","dossier2");
     
    function liste_fichiers_from_dossier($pDossier){
     
        $tab_fichiers = array();
        $dossierTraitement = "";
        $dossierTraitement = "dossierracine".$pDossier;
     
        if( ($pDossier != "") && (file_exists($dossierTraitement)) ){
            $open = opendir($dossierTraitement);
            while($fichier = readdir($open)){
                if( $fichier != '.' && $fichier != '..' && $fichier != 'Thumbs.db'){
                    $tab_fichiers[] = $fichier;
                }
            }
            closedir($open);
            sort($tab_fichiers);
        }
     
        return $tab_fichiers;
     
    }
     
    foreach($tab_dossiers  as $dossier){   
            $liste_fichiers_from_dossier = liste_fichiers_from_dossier($dossier[titre], $pFilter=null);
            foreach($liste_fichiers_from_dossier as $fichier){
                $tab_dosssiers_fichiers[$dossier[titre]] .= $fichier;
            }
        }
    merci de votre aide

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 80
    Par défaut
    Bonjour,

    vous pouvez utiliser une fonction récursive.

    ci-dessous, un pseudo-code qui vous permettra d'implémenter ça de façon simple :
    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
     
    file_structure(folder)
    {
      liste_fichiers = array()
      fichiers = liste_fichiers(folder)
      i := 0
      tant que i < compte(fichiers)
         si fichiers[i] est un repertoire
            liste_fichiers[fichiers[i]] = file_structure(fichiers[i])
         sinon
            liste_fichiers[] = fichiers[i]
         fin si
         i := i +1
      fin tant que
     
      return liste_fichiers
    }
    Ca devrait vous donner un point de départ pour implémenter cette fonction.

    HTH

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 118
    Par défaut
    en fait j'ai modifier ma fonction comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...
    $f=0;
            foreach($liste_fichiers_from_dossier as $fichier){
                $tab_dosssiers_fichiers[$dossier[titre]][$f] = $fichier;
                $f++;
            }
    ...
    merci pour votre aide

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 80
    Par défaut
    si vous ne gérez qu'un niveau de profondeur, pas de soucis.

    Si vous devez prendre en compte un niveau de profondeur supérieur, il vous faudra alors revoir votre algorithme.

    Cordialement.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/10/2008, 20h19
  2. créer un tableau dynamique
    Par paolo2002 dans le forum Struts 1
    Réponses: 1
    Dernier message: 06/06/2008, 17h48
  3. [Tableaux] Créer un tableau dynamique
    Par Ptimoustik dans le forum Langage
    Réponses: 3
    Dernier message: 17/03/2008, 20h47
  4. Comment créer un tableau dynamique ?
    Par khokho dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/08/2007, 08h40
  5. [MySQL] Créer un tableau dynamique
    Par Razgriz dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 27/02/2007, 22h52

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