Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/05/2011, 12h50   #1
Futur Membre du Club
 
Inscription : mai 2007
Messages : 115
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 115
Points : 19
Points : 19
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 :
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
totofe49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 13h04   #2
Membre actif
 
Homme Fabrice Agnello
Développeur informatique
Inscription : octobre 2010
Messages : 76
Détails du profil
Informations personnelles :
Nom : Homme Fabrice Agnello
Âge : 39
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 : 76
Points : 161
Points : 161
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 :
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
Agnello Fabrice est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 13h42   #3
Futur Membre du Club
 
Inscription : mai 2007
Messages : 115
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 115
Points : 19
Points : 19
en fait j'ai modifier ma fonction comme ceci :

Code :
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
totofe49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 13h48   #4
Membre actif
 
Homme Fabrice Agnello
Développeur informatique
Inscription : octobre 2010
Messages : 76
Détails du profil
Informations personnelles :
Nom : Homme Fabrice Agnello
Âge : 39
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 : 76
Points : 161
Points : 161
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.
Agnello Fabrice est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h46.


 
 
 
 
Partenaires

Hébergement Web