Phil: Function und Variablen

Hallo Zusammen,

Ich habe bis jetzt noch nie mit Function() gearbeitet, wird nun aber höchste Zeit. Habe allerdings bei meinem ersten Beispiel ein Problem.

  
$path = "xxx";  
$count = count(glob($path . "*.*")) + 1;  
  
function bild($bildname)  
{  
$filename = $path . $count . ".jpg";  
...  
}  

Das Problem liegt nun darin, dass die Variablen ausserhalb der function() nicht berücksichtig werden. Die Variabel $path und $count sind leer.

Wie kann ich das beheben? Vielen Dank für eure Hilfe!

  1. Hallo,

    Ich habe bis jetzt noch nie mit Function() gearbeitet, wird nun aber höchste Zeit.

    ja, das ist etwas Elementares. :-)

    $path = "xxx";

    $count = count(glob($path . ".")) + 1;

    function bild($bildname)
    {
    $filename = $path . $count . ".jpg";
    ...
    }

      
    Dieses Codefragment lässt erkennen, dass du das Konzept noch nicht recht verstanden hast. Nicht nur, dass du über die Funktionsgrenzen hinweg auf Variablen zugreifen möchtest; auch den Parameter $bildname, den du ausdrücklich an die Funktion übergibst, verwendest du innerhalb der Funktion gar nicht. Außerdem: Wo rufst du die Funktion überhaupt auf?  
      
    
    > Das Problem liegt nun darin, dass die Variablen ausserhalb der function() nicht berücksichtig werden.  
      
    That's the idea. PHP schottet die Variablen, die außerhalb der Funktion existieren, komplett von den internen, lokalen Variablen ab. Das heißt, Code außerhalb der Funktion kann nicht auf funktionslokale Variablen zugreifen, und die Funktion selbst nicht auf Variablen außerhalb[1].  
    Willst du Daten "in die Funktion hineingeben", dann solltest du sie als Parameter der Funktion notieren. Und \*einen\* Wert (oder ein Objekt) kannst du mit dem return-Statement als Funktionsergebnis an den aufrufenden Programmcode zurückgeben.  
      
    
    > Wie kann ich das beheben?  
      
    Lass das Konzept nochmal auf dich wirken!  
      
    So long,  
     Martin  
      
      
    [1] Hier ist PHP strenger als einige andere Programmiersprachen: Die meisten erlauben einer Funktion immerhin den Zugriff von innen nach außen.
    
    -- 
    Soso, der Klügere gibt nach.  
    Aber warum sollen sich immer nur die Dummen durchsetzen?  .oO(?)