Ergebnis 1 bis 3 von 3

Thema: PHP und Array - n00b braucht Rat ...

  1. #1
    Gast

    Standard PHP und Array - n00b braucht Rat ...

    Tach auch!

    Ich versuche mal, keine dummen Anfängerfehler zu machen. Hoffentlich ist das Resultat hier nicht zu lang und alle eventuellen Fragen sind beantwortet ;-)

    Aslo, folgendes Problem: ich versuche ein PHP-Script zu schreiben, welches mit Verzeichnissen/Pfaden arbeitet - je nachdem von wo es aufgerufen wird, soll es drei Verzeichnislevel "nach unten" auslesen - ausgehend von

    Code:
    $dirbase = getcwd()."/";
    und dabei (a) die Verzeichnisnamen singulär (also jeden Level) in einem Array speichern und gleichzeitig die Verzeichnisnamen sowie einige Dateinamen auswerten (so nach dem Motto "wenn = x, dann echo y").

    Der logische Aufbau ist im Endeffekt ganz einfach und auch fertig. Worum es geht ist nun leider die Art und Weise, wie PHP mit Arrays umgeht. Nach endlosem Studium diverser 'Anleitungen' bin ich am Ende meiner Weisheit, anders ausgedrückt: $EOW = TRUE.

    Vorgreifend möchte ich vielleicht anmerken dass PHP dies zwar vielleicht kann, die Lösung aber im Gegensatz zu anderen Sprachen viel zu komplex ist; ich habe ehrlich gesagt nach der ganzen Lektüre um PHP-Arrays so ziemlich die Faxen dicke - also entweder bin ich zu blöde, oder die gesammelten Beispiele waren nur zur Userverwirrung gedacht.

    Zur Verdeutlichung des Problems:

    (a) PHP v5.2.4 auf Apache v2.2.6 (lokal simuliert via XAMPP).
    (a-1) KEINE Schreibberechtigung für Scripts!

    (b) Startverzeichnis ist "ww.xyz.cm" oder irgendein Unterverzeichnis hiervon mit mindestens drei Verzeichnissen 'darunter'; eine Prüfung "ob vorhanden" ist nicht nötig. Der Übergebene Wert des Startverzeichnisses ist jeweils ein fester Wert; es ist also egal ob dieser Wert "ww.xyz.cm/" oder "ww.xyz.cm/test/wurst/brot/kaese/" ist.

    (c) Das Script soll die noch unbekannte Zahl von Verzeichnisse im ersten Level unterhalb vom Start-Ort auslesen und in ein Array schreiben, Beispiel:

    Code:
    + ww.xyz.cm/test/
    - butter/
    - kaese/
    - margarine/
    - marmelade/
    (also einfaches Array über "$first[$zaehler]" würde gehen, aber ...)

    (d) Danach soll das Script jeweils in die gefundenen Directories gucken, um dort den zweiten Level auszulesen, Beispiel:

    Code:
    + butter/
    -- antje
    -- kerrygold
    + kaese/
    -- edamer
    -- tilsiter
    -- schmierkaese
    + margarine/
    -- rama
    -- sanella
    + marmelade/
    -- homemade
    -- zentis
    (e) Jetzt soll das Script diese Daten aber 'verknüpft' bearbeiten (also insgesamt für alle drei Ebenen *EIN* Multilevel-Array nutzen). Wenn ich also alle drei Subdirectory-Level der Reihe nach bearbeiten will, müsste ich im Endeffekt ein Konstrukt in dieser Form haben (BEISPIEL, kein PHP code!):
    Code:
    $pfad = $array[zaehler1][$zaehler2][zaehler3]
    damit ich folgendes machen könnte (auch nur BEISPIEL, kein PHP-Code!):

    Code:
    for&#40;$count = 1; $count <= $zaehler1; $count++&#41;&#123;
       $pfad = $array&#91;zaehler1&#93;&#91;$zaehler2&#93;&#91;zaehler3&#93;
       echo $pfad;
          for&#40;$count = 1; $count <= $zaehler2; $count++&#41;&#123;
             $pfad = $array&#91;zaehler1&#93;&#91;$zaehler2&#93;&#91;zaehler3&#93;
             echo $pfad;
                for&#40;$count = 1; $count <= $zaehler3; $count++&#41;&#123;
                $pfad = $array&#91;zaehler1&#93;&#91;$zaehler2&#93;&#91;zaehler3&#93;
                echo $pfad;
                &#125;
                $zaehler3 = 0;
         &#125;
         $zaehler2 = 0;
    &#125;
    Setzt man hier mal ein paar Beispielsdaten ein, würde ich folgendes brauchen:

    $pfad = $array[1][0][0]

    liefert 1. Verzeichnisnamen im 1. Level

    $pfad = $array[1][1][0]

    liefert 1. Verzeichnisnamen im 1. Level plus 1. Verzeichnisnamen 2. Level

    $pfad = $array[2][2][1]

    liefert 2. Verzeichnisnamen im 1. Level plus 2. Verzeichnisnamen 2. Level plus dem darin befindlichen 1. Verzeichnisnamen im 3. Level

    ....
    Örgs! Röchel!

    Ich hatte einen Ansatz der sogar ähnlich mit der Syntax "$blahbla[x][x][x]" funktionierte, allerdings war die Ausgabe mies und durch die ziemlich abgefahrenen interne Zähler- und Flag-Stellung von PHP komplett in den Fritten. Ein Nachhalten der ganzen Flags und Zähler hätte mehr Zeit gekostet als alles andere ... und davon ab war ich nicht in der Lage, über PUSH z.B. direkt in die 2. Verzeichnisebene des Arrays zu schreiben (es sei denn, ich manipuliere 30 Flags, 20 Settings und 10 Counter und würfle gleichzeitig einen 6-er Pasch).

    So, jetzt könnt ihr loslachen, brüllen, weinen oder gar einfach ohnmächtig darniedersinken ob meiner infantilen Ahnungslosigkeit ...

    Gibt es dafür eine EINFACHE Lösung oder nicht?

    "Niemand ist wirklich unnütz - er kann immer noch als schlechtes Bespiel gelten!"

    In diesem Sinne ...

    ... Danke!

    R3al
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Forum Guru
    Registriert seit
    28.12.2004
    Ort
    Ringgenberg(bei Interlaken) / Schweiz
    Beiträge
    4.787
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Code:
    function dir_tree&#40;$base_dir, $dir, $ebene&#41;
    &#123;
     $dir_tree=array&#40;&#41;;
    
     $d = dir&#40;$base_dir.'/'.$dir&#41;;
     while&#40;$file = $d->read&#40;&#41;&#41;
     &#123;
      if &#40;$file!='.' && $file!='..' && is_dir&#40;$base_dir.'/'.$dir.'/'.$file&#41;&#41;
      &#123;
       $tmp&#91;'name'&#93;=$file;
       $tmp&#91;'folder'&#93;=$dir;
       $tmp&#91;'ebene'&#93;=$ebene;
       $tmp&#91;'content'&#93;=dir_tree&#40;$base_dir, $dir.$file.'/', $ebene+1&#41;;
       
       $dir_tree&#91;&#93;=$tmp; unset&#40;$tmp&#41;;
      &#125;
     &#125;
     $d->close&#40;&#41;;
     
     return $dir_tree;
    &#125;

    stichwort rekursive funktion

  3. #3
    R3alRomaji
    Gast

    Standard

    GreenRover,

    DANKE! ... Das war vom Lösungsansatz nicht ganz was ich erwartet hatte, aber das war ja der Grund meiner Verzweiflung ... falsches Denken! Gerade ein wenig herumprobiert und siehe da, es klappt. Jetzt muss ich zwar meinen restlichen Kram umstellen, aber auch das ist mir egal - schliesslich habe ich etwas gelernt

    Werde mir auf alle Fälle das Thema rekursive Funktionen nochmal genauer ansehen - auf die Lösung wäre ich nie im Leben gekommen! Das liegt wohl an meiner 'Konditionierung' durch mehrere alte Programmiersprachen, ich denke ganz einfach viel zu geradlinig

    Danke nochmals,

    R3al

Ähnliche Themen

  1. absoluter n00b braucht hilfe!!
    Von goku21 im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 4
    Letzter Beitrag: 06.11.2007, 15:43
  2. Totaler N00b braucht hilfe....
    Von Tearsof-theMoon im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 6
    Letzter Beitrag: 07.04.2007, 17:23
  3. Navigationsleiste mit DIV Bereich n00b Frage
    Von Warchild im Forum HTML & CSS Forum
    Antworten: 2
    Letzter Beitrag: 27.04.2006, 23:40
  4. HTML-N00b
    Von frostbeule im Forum HTML & CSS Forum
    Antworten: 8
    Letzter Beitrag: 13.07.2005, 01:36
  5. N00b Frage zum Thema: Frames
    Von Cruizer23 im Forum HTML & CSS Forum
    Antworten: 26
    Letzter Beitrag: 19.04.2004, 20:02

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •