Array und Rekursive Funktion - Werte fehlen

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

  • Array und Rekursive Funktion - Werte fehlen

    Ich habe folgende Funktion, um alle Dateien (inklusive Unterverzeichnis) einzulesen in ein mehrdimensionales Array. Folgende Ordnerstruktur:
    ./
    datenschutz.php
    impressum.php
    undandere
    bilder/
    banner.png
    undandere
    Doch in meinem Array ist am Ende immer nur das Hauptverzeichnis gespeichert, obwohl die anderen zwischenzeitlich auch eingelesen werden, denke mal, dass das irgendwas mit der rekursiven Funktion zu tun hat, da kenne ich mich nicht so gut mit aus. (Anfänger)

    Quellcode:
    PHP-Code:
    function listPicture ($dir$type=""$recursive=TRUE)
    {
        
    $handle opendir($dir);
        if ( !
    $handle )
            die (
    "fehler");
        else
        echo 
    "Ordner $dir geöffnet <br />";
        
        while ( 
    FALSE !== ( $file readdir($handle) ) )
        {
            if (
    preg_match("#^\.{1,2}$#",$file))
            {
                continue;
            }
            if ( 
    is_dir($dir."/".$file) )
            {
                    if ( 
    )
                        {
                            
    $newDir $dir."/".$file;
                            
    listPicture($newDir$type$recursive);
                        }
            }
            elseif ( 
    is_file($dir."/".$file) )
            {
                if ( !empty(
    $type) )
                {
                    foreach ( 
    $type as $typ)
                    {
                        if ( 
    substr($file, -strlen($typ)) == $typ )
                        {
                            
    $picture[$dir]['name'][] = $file;
                            continue;
                        }
                    }
                }
                else
                
    $picture["$dir"]['name'][] = $file;
                        
            }
        }
        
    /*echo '<pre>';
                print_r($picture);
                echo '</pre>';    */
        
    return $picture;    
        @
    closedir($handle);

    Zuletzt geändert von einermeiner; 03.06.2011, 14:14.

  • #2
    Hallo,

    du hast vergessen, den Rückgabewert des rekursiven Aufrufs (Zeile 20 in deinem Code) aufzufangen und zu verarbeiten. Wenn man sauber prozedural arbeiten will, sollte man außerdem besser mit return false (o. ä.) arbeiten als mit die().

    Einfacher kommst du übrigens mit PHP: RecursiveDirectoryIterator - Manual

    Gruß,

    Amica
    Zuletzt geändert von AmicaNoctis; 03.06.2011, 13:50.
    [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
      Ich dachte mir schon, dass es so ein simpler Fehler sein muss ...
      Wie folgt geändert und es funktioniert, danke!

      PHP-Code:
      if ( $recursive )
      {
          
      $array_return listPicture($dir."/".$file$type$recursive);
          
      $picture array_merge($picture$array_return);

      Kommentar

      Lädt...
      X