Funktionen und Rückgabewerten

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

  • Funktionen und Rückgabewerten

    hiho,

    Frage zu Funktionen und Rückgabewerten...

    Eine Funktion wird von einem Dokument mit dem Aufruf xtc_getDownloads() gestartet, ließt ein
    Verzeichnis aus und liefert dann durch return $files; das ganze per Rückgabewert zurück.
    Das geht alles total Prima…
    Aber…
    Ich will nun nicht nur das Verzeichnis sondern auch die Dateien aller Unterverzeichnisse
    usw. haben. Dazu muss ich das Verzeichnis also Rekursiv auslesen. Ich lasse nun also in der
    Funktion xtc_getDownloads() eine neue Funktion aufrufen die die Verzeichnisse rekursiv
    auslesen tut. Diese neue Funktion liefert ebenfalls als Ergebnis eine Variable $files die
    mit der von der Originalfunktion identisch ist, aber sie hat auch alle Dateien der Unter-
    Verzeichnisse dabei. Soweit so gut…
    Wie bekomme ich aber nun den Rückgabewert wieder hin… egal ob ich ihn in die erste
    Oder zweite Funktion schreibe, ich bekomm nichts zurück zum Dokument das die
    Funktion aufruft…
    Hast jemand da ne Idee???

    Kurzform original:
    1. Datei aufruf xtc_getDownloads()
    2. xtc_getDownloads() durchsucht Verzeichnis und erstellt $files
    3. Rückgabe an Datei der $files von xtc_getDownloads()
    Kurzform neu:
    1. Datei aufruf xtc_getDownloads()
    2. xtc_getDownloads() ruft GetDirArray($sPath) auf
    3. GetDirArray($sPath) durchsucht rekursiv das Verzeichnis und erstellt $files
    4. Rückgabe an Datei der $files von ???

    Wer macht also nun die Rückgabe…erwartet wird sie von der xtc_getDownloads()???


    Gruß yoda

  • #2
    PHP-Code:
    function GetDirArray($sPath) {
        return 
    /* Array(...) */;
    }
    function 
    xtc_getDownloads() {
        return 
    GetDirArray($sPath);

    hopka.net!

    Kommentar


    • #3
      genau das wollte ich wissen...merci

      Ich hab zwar nun einen Rückgabewert, aber leider noch nicht alles das was ich wollte.

      Es gibt einen Ordner Downloads in dem 2 Dateien sind. In diesem Ordner wiederum ist ein Ordner Test in dem eine Datei liegt.
      Das orginal Funktion wird von einer Datei aufgerufen die dann den rückgabewert erwartet. der original code ist folgender:
      PHP-Code:
      function xtc_getDownloads() {

        
      $files=array();

        
      $dir=DIR_FS_CATALOG.'download/';
        if (
      $fp=opendir($dir)) {
        while  (
      $file readdir($fp)) {
              if (
      is_file($dir.$file) && $file!='.htaccess'){
               
      $size=filesize($dir.$file);
              
      $files[]=array(
                              
      'id' => $file,
                              
      'text' => $file.' | '.xtc_format_filesize($size),
                              
      'size'=>$size,
                              
      'date'=>date ("F d Y H:i:s."filemtime($dir.$file)));
              
              }
      //if
              
      // while
              
      closedir($fp);
        }
        return 
      $files;
        } 
      Da ich nun alles inkl. Unterverzeichnisse auslesen will habe ich es nun wie oben beschrieben umgesetzt:
      PHP-Code:
      function xtc_getDownloads() 
        {

            
      $dir=DIR_FS_CATALOG.'download/';
            
      GetDirArray($dir);
            
            return 
      GetDirArray($dir);
        }

        function 
      GetDirArray($sPath)
        {
          
      $handle=opendir($sPath);
          while (
      $file readdir($handle))
          {
                  
      $retVal[count($retVal)] = $file;
          }
          
      closedir($handle);
          
      sort($retVal);

          while (list(
      $key$val) = each($retVal))
          {
              if ((
      $val != ".") && ($val != "..") && ($val != ".htaccess"))
              {
                      
      $path str_replace("//","/",$sPath.$val);
                      
      $size=filesize($path);
                      
      $file str_replace(DIR_FS_CATALOG."download/","",$sPath.$val);
                      if (!
      is_dir($sPath.$val))
                      {
                      
      $files[]=array(
                              
      'id' => $file,
                              
      'text' => $file.' | '.xtc_format_filesize($size),
                              
      'size'=>$size,
                              
      'date'=>date ("F d Y H:i:s."filemtime($path)));
                      } 
      // end if
                      
      if (is_dir($sPath.$val))
                         {
                             
      GetDirArray($sPath.$val."/");
                         } 
      // end if
                 
      // end if
             
      // end while
             
      return $files;
        } 
      So habe ich keinerlei Fehlermeldungen, aber in dem was zurückgegeben wird stehen nur die Dateien der ersten Ebene und nicht die Dateien aus dem Unterverzeichnis.
      Wenn ich nun return GetDirArray($sPath); nehme kommen nur fehlermeldungen und nur mit GetDirArray(); ebenfalls...
      Zuletzt geändert von yodatortenboxwe; 24.03.2005, 11:05.

      Kommentar


      • #4
        Code:
        + php-tags
        - scrollballken
        ---------------------
        = leserlicher code

        Kommentar


        • #5
          sorry...


          so besser???

          Kommentar


          • #6
            Versuch's mit
            PHP-Code:
            $files[] = GetDirArray($sPath.$val."/"); 
            in der 6.-letzten Zeile deines Codes.

            (Wäre schön wenn PHP- und Code-Blöcke eine Zeilennummerierung hätten.)

            Kommentar

            Lädt...
            X