kostenloser Webspace werbefrei: lima-city


Variablen von außerhalb in einer Funktionen beschreiben

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    mace

    mace hat kostenlosen Webspace.

    OKay, der Titel ist ziemlich verwirrend. Also es geht darum das ich folgenden Code habe

    function readContent($Anzahl,$verzeichnis)
       {
         $path[$Anzahl] = @opendir($verzeichnis);
         while (($eintrag = @readdir($path[$Anzahl])) !== false) {
            if($eintrag == ".." or $eintrag == ".")
             {
             }
            elseif(is_dir($verzeichnis."/".$eintrag))
             {
              readContent(($Anzahl+1),$verzeichnis."/".$eintrag);
             }
            else
             {
              $Daten[$verzeichnis][] = $eintrag;
             }
          }
        closedir($path[$Anzahl]);
       }
    
      $Daten = array();
      readContent(1,".");
      print_r($Daten);


    Nun ist $Daten au?erhalb der Funktion readContent und ich will das sie innerhalb der Funktion beschrieben wird. Wenn ich das so mache wie in meinem Code oben, dann wird sie zwar in der Funktion auch mit Inhalt gef?llt, sobald ich aber nachher wieder auf $Daten zugreife ist sie wieder nur "array()".

    MIr return $Daten will ich das hier nicht, ich suche nach einem anderen Weg die Variable in der Funktion zu beschreiben und trotzdem nachher darauf zugreifen zu k?nnen. Geht das vllt mit global oder so etwas ?

    Hoffe jmd kann helfen,

    mfg mace
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Soweit ich wei? geht das mit dem befehl global

    also:

    global $daten;
  4. Autor dieses Themas

    mace

    mace hat kostenlosen Webspace.

    Dann sehe es so aus :

    $Daten = array();
    
      global $Daten;
    
      function readContent($Anzahl,$verzeichnis)
       {
         $path[$Anzahl] = @opendir($verzeichnis);
         while (($eintrag = @readdir($path[$Anzahl])) !== false) {
            if($eintrag == ".." or $eintrag == ".")
             {
             }
            elseif(is_dir($verzeichnis."/".$eintrag))
             {
              readContent(($Anzahl+1),$verzeichnis."/".$eintrag);
             }
            else
             {
              $Daten[$verzeichnis][] = $eintrag;
             }
          }
        closedir($path[$Anzahl]);
       }
    
    
      readContent(1,".");
      print_r($Daten);


    UNd es geht weiterhin nicht.
  5. Hi,

    du kannst das auf 2 Arten l?sen. Mit globalen Variablen $GLOBALS["VAR"]. Allerdings k?nnen bei zuvielen Globalen Variablen Seiteneffekte auftreten. Die bessere Alternative ist es einen R?ckgabewert in der Funktion zu benennen. RETURN $Var.
    Ich schreib dir nochmal beide L?sungen auf (ohne Gew?hr auf Korrektheit)

    1. L?sung mit globalen Variablen:

    function readContent($Anzahl,$verzeichnis)
    
       {
    
         $path[$Anzahl] = @opendir($verzeichnis);
    
         while (($eintrag = @readdir($path[$Anzahl])) !== false) {
    
            if($eintrag == ".." or $eintrag == ".")
    
             {
    
             }
    
            elseif(is_dir($verzeichnis."/".$eintrag))
    
             {
    
              readContent(($Anzahl+1),$verzeichnis."/".$eintrag);
    
             }
    
            else
    
             {
    
              $Daten[$verzeichnis][] = $eintrag;
              $GLOBALS["Daten"] = $Daten[$verzeichnis];          
    
             }
    
          }
    
        closedir($path[$Anzahl]);
    
       }
    
    
    
      $GLOBALS["Daten"] = array();
    
      readContent(1,".");
    
      print_r($GLOBALS["Daten"]);


    Mit Return (besser!) s?he das ganze so aus:

    function readContent($Anzahl,$verzeichnis)
    
       {
    
         $path[$Anzahl] = @opendir($verzeichnis);
    
         while (($eintrag = @readdir($path[$Anzahl])) !== false) {
    
            if($eintrag == ".." or $eintrag == ".")
    
             {
    
             }
    
            elseif(is_dir($verzeichnis."/".$eintrag))
    
             {
    
              readContent(($Anzahl+1),$verzeichnis."/".$eintrag);
    
             }
    
            else
    
             {
    
              $Daten[$verzeichnis][] = $eintrag;
              Return $Daten[$verzeichnis];
    
             }
    
          }
    
        closedir($path[$Anzahl]);
    
       }
    
    
    
      $Daten = array();
    
      $Daten = readContent(1,".");
      
      print_r($Daten);


    So hoffe, das stimmt so.
    mfg kingalex

    Beitrag ge?ndert am 24.01.2006 19:30 von kingalex
  6. Autor dieses Themas

    mace

    mace hat kostenlosen Webspace.

    Danke, die GLOBALS Variante funktioniert.
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!