Dennis: Variablen aus Funktion erstellen/ändern und global verwenden

Beitrag lesen

Hi D.R. (hehe, meine Initialien :-),

Ich bin mir grad nicht so ganz sicher, ob ich dich richtig verstanden habe, aber prinzipiell geht das in PHP schon:

// globale Variable definieren  
$autor = "Ihr Name";  
  
// Funktion definieren  
function wer_ist_der_autor() {  
  // globale Variable holen  
  global $autor;  
  // und ausgeben  
  echo "Der Autor ist $autor.";  
}  
  
// Funktionsaufruf  
wer_ist_der_autor();

Per global kannst du also eine oder mehrere Variablen aus dem globalen Gültigkeitsbereich in den Gültigkeitsbereich der Funktion hereinholen.

Das Problem damit ist allerdings, dass dies extrem schlechter Stil ist, desshalb hier ein paar alternative Vorschläge:

$autor = "Ihr Name";  
  
function wer_ist_der_autor($name) {  
  echo "Der Autor ist $name.";  
}  
  
wer_ist_der_autor($autor);

Hier wird die benötigte Variable also einfach als Parameter übergeben, ich gehe mal davon aus, dass du dies kennst. Wenn du mehrere Werte übergeben willst, kannst du die auch alle in ein assoziertes Array packen und als ein Parameter übergeben. Parameter können übrigens auch optional sein.

Das Problem hiermit ist allerdings, wenn du innerhalb der Funktion Änderungen an $name vornimmst, sind diese nicht außerhalb der Funktion verfügbar. Dagegen ist auch ein Kraut gewachsen:

$autor = "Ihr Name";  
  
// Was steht in $autor drin?  
echo $autor;    // gibt Ihr Name aus  
  
function bearbeite_autor(&$name) {  
  $name = "(" . $name . ")";  
}  
  
// Funktion aufrufen  
bearbeite_autor($autor);  
  
// Und was steht jetzt in $autor drin?  
echo $autor;    // gibt (Ihr Name) aus

Mit einem &-Zeichen vor dem Variablen-Namen in der Funktionsdefinition kannst du Variablen als Referenz übergeben, dadurch werden Änderungen im Original vorgenommen und sind somit nach Ablauf der Funktion im globelen Wertebereich verfügbar.

In simplen Fällen kannst du natürlich auch einfach nur einen Wert als Rückgabe der Funktion weiterverarbeiten. Bei komplexeren Funktionen mag der Einsatz von einem Rückgabewert und die Nutzung von Referenzen (z.B. für zusätzl. Informationen) sinnvoll sein.

Viele Grüße aus Kanada,
  ~ Dennis.