Verzeichnis Inhalt auslesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Verzeichnis Inhalt auslesen

    Hey,

    Ich möchte den Inhalt eines Verzeichnises ausgeben lassen. Darin enthaltende Ordner sollen seperat angezeigt werden. So das ganze funktioniert auch soweit. Folgenden Code benutze ich dafür:
    PHP-Code:
    $files scandir(DOWNLOAD_FOLDER); 
        
    // All Folders gets stored in the Array initalized above. 
        
    for($i=0$i count($files); $i++) 
        {
            if(
    is_dir(DOWNLOAD_FOLDER."/".$files[$i]))
            {
                
    $index count($folders);
                
    $folders[$index] = $files[$i];
            }
        }
        
        
    // The File Array gets new structured. All Folders gets deleted.
        
    for($i0$i count($files); $i++)
        {
            if(
    is_dir(DOWNLOAD_FOLDER."/".$files[$i]))
            {
                unset(
    $files[$i]);
            }
            
            
            
    sort($files);
        } 
    So wird nun ein Array mit Ordnern erstellt und eins mit den eigentlichen Files. Bei dem Files Array sollten ja nun zudem die Ordner aussortiert werden.
    So sieht das File Array aus bevor ich die Ordner aussortiere:
    Code:
    Array
    (
        [0] => Impressum.docx
        [1] => Neuer Ordner
        [2] => WIZO_Anderster.rar
        [3] => addfreestats.txt
        [4] => filme
        [5] => mam
        [6] => ml
        [7] => music
        [8] => rar10.txt
        [9] => test
    )
    Und so sieht das ganze nach dem Ordner aussortieren aus:
    Code:
    Array
    (
        [0] => Impressum.docx
        [1] => WIZO_Anderster.rar
        [2] => addfreestats.txt
        [3] => mam
        [4] => music
        [5] => rar10.txt
    )
    So und der Ordner auf den sich das Script bezieht enthält fogende Dateien und Ordner:
    Code:
    addfreestats.txt	->	Datei
    rar10.txt		->	Datei
    Impressum.docx		->	Datei
    WIZO_Anderster.rar	->	Datei
    filme			->	Ordner
    music			->	Ordner
    test			->	Ordner
    Neuer Ordner		->	Ordner
    mam			->	Ordner
    ml			->	Ordner
    Das Array welche die Ordner enthält enthält alle Ordner korrekt. Jedoch werden bei dem File Array einige Ordner nicht aussortiert. Dies passiert jedoch nur dann wenn Ordner mit m anfangen. Wenn ich keine Ordner mit einem m beginnend habe, wird alles korrekt aussortiert.
    Jetzt frage ich mich woran kann das liegen? Hat das m eine besondere Bedeutung? Oder liegt es irgendwie am Code? Ich kann das ganze nicht ganz nachvollziehen.

    Bin für jede Hilfe dankbar.

    lg
    2Bad4You

  • #2
    Hallo,

    den sort-Aufruf darfst du erst nach der Schleife machen, sonst stimmen die Indizes ($i) bzw. count($files) ja zwischendurch nicht mehr.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Erstmal danke für die schnelle Antwort. Ich habe das ganze jetzt geändert damit es nun so aussieht:
      PHP-Code:
      // The File Array gets new structured. All Folders gets deleted.
          
      for($i0$i count($files); $i++)
          {
              if(
      is_dir(DOWNLOAD_FOLDER."/".$files[$i]))
              {
                  unset(
      $files[$i]);
              }
          }
          
      sort($files); 
      Allerdings ergibt ein print_r des File Array`s nun immernoch:
      Code:
      Array
      (
          [0] => Impressum.docx
          [1] => WIZO_Anderster.rar
          [2] => addfreestats.txt
          [3] => music
          [4] => rar10.txt
          [5] => test
      )
      Es sind immernoch 2 Ordner enthalten. music und test. Diese werden immernoch nicht "aussortiert".

      Kommentar


      • #4
        Achso, ja, count stimmt ja immer noch nicht. Wenn das Array z. B. 8 Einträge hat und du Nummer 0, 1 und 2 löscht, ergibt count nur noch 5, den Index 5, 6 und 7 erreichst du also gar nicht mehr.

        Warum arbeitest du nicht mit foreach?
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Ahhh okay danke für den Tipp mit foreach. Warum ich das bisjetzt nicht gemacht habe weiß ich selber nicht, ich nehme meistens automtisch bei solchen Sachen die for Schleife. Habs nun geändert in:
          PHP-Code:
          // The File Array gets new structured. All Folders gets deleted.
              
          $i=0;
              foreach(
          $files as $file)
              {
                  if(
          is_dir(DOWNLOAD_FOLDER."/".$file))
                  {
                      unset(
          $files[$i]);
                  }
                  
          $i++;
              } 
          und nun gehts. Vielleicht geht das ganze auch noch nen tick einfacher aber so gehts ja erstmal.
          Danke dir für deine Hilfe.

          Kommentar


          • #6
            Wozu $i = 0 und $i++?

            PHP-Code:
            foreach ($files as $i => $file) {} 

            Kommentar


            • #7
              Zitat von h3ll Beitrag anzeigen
              Wozu $i = 0 und $i++?
              Etwas spät, das Thema hatten wir schon abgehakt
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Kommentar


              • #8
                Zitat von AmicaNoctis Beitrag anzeigen
                Etwas spät, das Thema hatten wir schon abgehakt
                Aber anscheinend wurde es noch immer nicht richtig umgesetzt.

                Kommentar


                • #9
                  Zitat von h3ll Beitrag anzeigen
                  Aber anscheinend wurde es noch immer nicht richtig umgesetzt.
                  Na eben, sorry, hatte ich ganz übersehen.
                  [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                  Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                  Super, danke!
                  [/COLOR]

                  Kommentar


                  • #10
                    PHP-Code:
                    error_reporting(-1);
                    ini_set('display_errors'TRUE); 

                    $zu_durchsuchender_ordner '.';

                    $iterator           = new DirectoryIterator($zu_durchsuchender_ordner);
                    $zielarray          = array();
                    $zielarray['dirs']  = array();
                    $zielarray['files'] = array();


                    foreach(
                    $iterator as $file)
                    {
                      if(
                    $file->isdot())  continue;
                      if(
                    $file->isfile()) $zielarray['files'][]= $file->getFilename();
                      if(
                    $file->isdir())  $zielarray['dirs'] []= $file->getFilename();
                    }
                    sort($zielarray['files']);
                    sort($zielarray['dirs']); 
                    Wir werden alle sterben

                    Kommentar

                    Lädt...
                    X