Tableau stockant une arborescence virtuellement infinie

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 11 mai 2005 à 11:47
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 23 mai 2005 à 11:58
Salut a tous,





j'ai besoin d'avis...j'essaye de reflechir a ca tout seul dans mon
coin, mais bon, il ne fait pas beau ici a Nuremberg, c'est le milieu de
la semaine, je ne dors pas assez...bref, j'ai du mal ;-)





Mettons que je veuille stocker une arborescence de repertoires dans un
tableau. Et je veux evidemment que ce tableau soit reutilisable sans se
gaver d'aspirines a chaque fois que l'on veut en faire quelquechose...


Pour l'instant, la methode que j'ai choisie, si elle est efficace, me pose un probleme philosophique d'optimisation ;-)


Je stocke TOUS les fichiers et repertoires trouves dans un premier
niveau de ce tableau associatif : $tableau[mon_chemin_courant_lu]


Puis je teste si ce que je rencontre dans ce chemin lu est un repertoire ou un fichier.


A ce moment, je le stocke soit dans


$tableau[mon_chemin_courant_lu]['dir'][]=nom du repertoire


ou


$tableau[mon_chemin_courant_lu]['file'][]=nom du fichier





Ca marche, et on peut ainsi facilement reafficher l'arborescence correctement moyennant quelques appels recursifs.


Mais du coup, j'ai des doublons...


mon_chemin_courant_lu est forcement egal a quelques chose soit dans
$tableau[mon_chemin_courant_lu]['dir'][] soit dans
$tableau[mon_chemin_courant_lu]['file'][]


Et ca me gene! J'ai l'impression de faire du gaspillage... ;-)





Donc si quelqu'un a une idee AUTRE que de stocker reellement
l'arborescence telle quelle. AUTRE, parce que dans ce cas, je me
retrouverais avec un tableau avec beaucoup beaucoup trop de dimensions
possibles, et c'est ingerable...





J'ai aussi pense a ne stocker que le chemin dans un tableau simple
associatif, mais dans ce cas, au reaffichage, je dois relire le
repertoire pour tester si c'est un fichier, un repertoire, et de plus
cela complique pas mal pour l'arborescence (il faudrait parser la clef
associative a chaque fois). Et pour d'eventuels traitement sur
uniquement certains repertoires, par exemple...(tri par exemple).





Voila...d'autres idees ?





Merci :-)

2 réponses

GAME2OVR Messages postés 40 Date d'inscription samedi 25 décembre 2004 Statut Membre Dernière intervention 12 juin 2005
22 mai 2005 à 21:26
bas je n'ais pas tout compris, mais on peut suivre ton principe, tu
fait un tableau la clé est le nom du dossier ou du fichier et la valeur
et une information sur le fichier exemple

$dossier['mondossier']['image.jpg'] contiendra comme valeur le type de
la variable, si c'est un dossier ou un fichier, sa taille etc...

c'est plus simple comme ça chaque nouvelle colonne du tableau est un dossier ou un fichier...

non??
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 mai 2005 à 11:58
Hello,

ben oui, c'est la methode dont je parle lol ? Je stocke le chemin complet, le nom du fichier ou repertoire, la seule difference entre ta methode et la mienne est que j'utilise le type (repertoire, fichier) comme clef, et non pas comme valeur.
Mais ton systeme a l'avantage de pouvoir effectivement stocker plus simplement d'autres infos si je veux...donc, je vais me pencher dessus :-) (je n'avais pas du tout ca dans l'idee, stocker la taille, le type mime etc...mais pourquoi pas!)

Merci en tous cas d'avoir repondu :-)
0
Rejoignez-nous