Functionen mit If schleifen

Sorry, DarkSummer, aber ich merk das anscheinend schon gar nicht mehr, wenn ich Fachausdrücke verwende, weil's für mich ja eigentlich selbstverständlich ist ;)

Also Variablen haben einen bestimmten Gültigkeitsbereich (einen sog. Scope). Außerhalb dieses Bereichs kann man nicht auf sie zugreifen. Das ist in PHP zwar noch lange nicht so ausgeprägt wie in C(++), aber teilweise taucht es dennoch auf. So zum Bleistift bei Funktionen. Bei einer Funktion wird ein neuer Scope "eröffnet". Alle bisherigen Variablen sind damit ungültig. Ich erklär das am besten mal an einem Beispiel:
PHP:
<?
$text = "blablub";

function print_text()
{
  echo $text;
}

print_text();
?>
Ausgabe: nichts! Wieso? $text ist im Scope der Funktion nicht mehr gültig und enthält damit auch keinen Wert. Lösen kann man das Problem, indem man der Funktion sagt, dass es eine Variable aus dem globalen Scope (das ist alles, was nicht in Funktionen steht) benutzen soll. Das macht man mit dem Keyword global. Die Funktion sieht dann so aus:
PHP:
function print_text()
{
  global $text;
  echo $text;
}
Und siehe da, es wird "blablub" ausgegeben.

Hoffe das war verständlich jetzt :)


reima
 
Zurück