+ Antworten
Ergebnis 1 bis 12 von 12

Thema: array struktur für verzeichnis-struktur?

  1. #1
    TP-Veteran Daniel N. ist auf einem guten Weg Avatar von Daniel N.
    Registriert seit
    Sep 2002
    Ort
    Schweiz
    Beiträge
    1.307

    array struktur für verzeichnis-struktur?

    also auf die gefahr hin mich hier zu blamieren, post ich trotzdem mal

    meine frage: was ist die einfachste art und weise eine art verzeichnisstruktur (also mit wurzel und beliebigen unterverzeichnissen) in arrays abzubilden? bin hier grad mental am abrauchen deswegen (vielleicht täte ne hack-pause gut )

    sowas halt:
    PHP-Code:
    $struktur['wurzel]['unterverzeichnis1'][unterverzeichnisvonunterverzeichnis2]['dir3']['subdirvondir3
    Code:
    wurzel
    ----unterverzeichnis1
    --------unterverzeichnisvonunterverzeichnis2
    ----dir3
    --------subdirvondir3
    gibt's da dann komfortable möglichkeiten unterverzeichnisse hinzuzufügen? die struktur soll beliebig tief sein. zudem müssten die einzelnen verzeichnisse eindeutig identifizierbar sein...

    Passt auf, ich bin überheblich

    http://orangetree.ch-gnu.ath.cx

  2. #2
    TP-Insider HoRnominatoR ist auf einem guten Weg Avatar von HoRnominatoR
    Registriert seit
    Dec 2003
    Ort
    nienburg (raum hannover)
    Beiträge
    971
    was genau hast du vor? sowohl ein verzeichnisbaum als auch ein array sind hierarchische strukturen in denen du daten ablegen kannst.
    in eile kam er,
    in schwarzem gewand,
    aus den tiefen des waldes,
    ein einsamer mann, ein geschoepf der freiheit,
    ein geschoepf ohne furcht,
    doch alle nannten sie ihn nur T O D

  3. #3
    TP-Veteran Daniel N. ist auf einem guten Weg Avatar von Daniel N.
    Registriert seit
    Sep 2002
    Ort
    Schweiz
    Beiträge
    1.307
    ja, deine aussage ist richtig.

    nur was ich möchte ist eigentlich nur eine möglichkeit um die verzeichnisse 'virtuell' abzubilden. also soll heissen mithilfe dieses arrays soll es mir später möglich sein dateien (oder was auch immer) einzelnen unterverzeichnissen zuzuordnen.

    also solln die daten nicht in dem array ansich liegen, sondern irgendwo anders. das array soll ausschliesslich die struktur repräsentieren.

    eigentlich wollte ich das ja db-basiert machen, aber die nested-sets wollen mir einfach nicht innen kopp rein.

    Passt auf, ich bin überheblich

    http://orangetree.ch-gnu.ath.cx

  4. #4
    TP-Special Mod steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    Du siehst selber, wie unhandlich die Arrays werden, wenn man immer weiter verschachtelt. Sinnvoller ist hier die Handhabung als Objekt:
    PHP-Code:
    $file=array(
       
    'id' => 1,
       
    'name' => 'xyz',
       
    'isDir' => true,
       
    'parent' => 0,
       
    'rootline' 0,
       
    'crdate'`=> 1149804000,
    ); 
    Für die Struktur kommt dann eine "Tabelle"
    id - rootline - parent

    Das auch hier die Handhabung nicht leicht sind, schau mal unter "nested Sets" - das ist der Fachbegriff für diese Objektschachtelung.

    Die vorgestellte Struktur ist nur ein Beispiel.


    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer


  5. #5
    TP-Veteran Daniel N. ist auf einem guten Weg Avatar von Daniel N.
    Registriert seit
    Sep 2002
    Ort
    Schweiz
    Beiträge
    1.307
    hm.. für was steht in deinem beispiel 'rootline'? ansonsten leuchtets mir schon ein und ähnliches hab ich mir auch überlegt. nur das nested sets model sehe ich in deinem beispiel nirgends..

    nur wie gesagt rootline ist für mich grad nen bischen nichtssagend

    Passt auf, ich bin überheblich

    http://orangetree.ch-gnu.ath.cx

  6. #6
    TP-Special Mod steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    mir rootline ist die Verzeichnistiefe gemeint.


    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer


  7. #7
    TP-Veteran Daniel N. ist auf einem guten Weg Avatar von Daniel N.
    Registriert seit
    Sep 2002
    Ort
    Schweiz
    Beiträge
    1.307
    hmm, aber da kommt man doch um rekursive abfragen nicht rum wenn man dein beispiel in ein rdbms kippen würde

    was ist parent? int, string?

    momentan stell ich mir das so vor:
    Code:
    root(id->0,parent->??,rootline->0)
    -dir1(id->1,parent->0,rootline->1)
    --dir2(id->2,parent->1,rootline->2)
    ---dir3(id->3,parent->2,rootline->3)
    -dir4(id->4,parent->0,rootline->1)
    Geändert von Daniel N. (08.04.2006 um 21:56 Uhr)

    Passt auf, ich bin überheblich

    http://orangetree.ch-gnu.ath.cx

  8. #8
    TP-Supporter [jacky] ist auf einem guten Weg
    Registriert seit
    Dec 2005
    Beiträge
    455
    hm, ich denke, man kann um eine rekursivität nicht herumkommen, da man vorher ja nicht weiß, wie tief die verzeichnisstruktur sein wird!!

  9. #9
    TP-Special Mod steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    also parent ist die ID des Vaterobjektes, 0 hat keinen Vater. Man kann sich also so an den parents nach oben "hangeln"

    ID's sind immer int.
    Du siehst, es lässt sich sehr gut in einer DB abbilden, leicht zu sortieren etc.


    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer


  10. #10
    TP-Veteran Daniel N. ist auf einem guten Weg Avatar von Daniel N.
    Registriert seit
    Sep 2002
    Ort
    Schweiz
    Beiträge
    1.307
    ja, aber abfragen lässt es sich nicht leicht. da muss man ja extremst viele querys abgeben um sich da "hochzuhangeln"

    Passt auf, ich bin überheblich

    http://orangetree.ch-gnu.ath.cx

  11. #11
    TP-Supporter [jacky] ist auf einem guten Weg
    Registriert seit
    Dec 2005
    Beiträge
    455
    nein, sollte eigentlich nicht sein. ich denke, 1 query reicht (ein extrem komplizierter). schau dir mal nested sets an! das sind auch solche bäume, sind extrem schwere aber gute queries! (lass mich auch gerne berichtigen, falls das falsch ist, was ich sagte)

  12. #12
    TP-Veteran Daniel N. ist auf einem guten Weg Avatar von Daniel N.
    Registriert seit
    Sep 2002
    Ort
    Schweiz
    Beiträge
    1.307
    hah, nach einigem grübeln bin ich wohl zu einer lösung gekommen:

    Code:
    tabelle struktur:
    
    dir_id || dirname || parent_id || depth ||
    ----------------------------------------
    1      || images || 0 || 0 ||
    ----------------------------------------
    2      || gif || 1 || 1 ||
    ----------------------------------------
    
    tabelle objekte:
    
    obj_id || obj_name || parent_id || depth ||
    ------------------------------------------
    044 || bla.gif || 2 || 1 ||
    so kann man mit einem left join bequem files auslesen die in einem n-tiefen baum liegen.

    das hinzufügen eines verzeichnisses oder objektes scheint halt nur mit 2 statements zu funktionieren.. naja, solangs nur 2 sind

    Passt auf, ich bin überheblich

    http://orangetree.ch-gnu.ath.cx

+ Antworten

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51