Array und Rekursive Funktion - Werte fehlen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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);

    Last edited by 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
    Last edited by 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]

    Comment


    • #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);

      Comment

      Working...
      X