Globale und lokale Variablen

Variablen werden auch nach ihrem Gültigkeitsbereich unterschieden. Dies ist der Bereich, in dem die betreffende Variable mit ihrem Wert bekannt ist. Es gibt Variablen mit globalem Gültigkeitsbereich und Variablen mit lokalem Gültigkeitsbereich. Diese scheinbare Einschränkung auf einen lokalen Gültigkeitsbereich bietet bei längeren Programmen den Vorteil, dass Variablen nicht so leicht aus Versehen an weit voneinander entfernten Stellen verändert werden können.

Globale Variable:

Eine globale Variable wird außerhalb von Funktionen definiert und steht nur außerhalb derselben zur Verfügung. Dies ist ein Unterschied zu vielen anderen Programmiersprachen. Falls man eine globale Variable innerhalb einer Funktion benutzen möchte, so muss sie dort entweder mit dem Schlüsselwort global bekannt gemacht oder als Parameter übergeben werden. Variablen, die ihren Ursprung außerhalb des Programmes haben wie z. B. Werte aus Formularfeldern sind immer global.

Lokale Variable:

Eine lokale Variable wird in einer Funktion definiert und steht nur innerhalb dieser Funktion zur Verfügung. Lokale Variablen gleichen Namens in unterschiedlichen Funktionen oder globale Variablen gleichen Namens haben nichts miteinander zu tun. Ein Parameter, der als Kopie an eine Funktion übergeben wird, ist dort lokal.

Ein Beispiel (Datei uc03.php):

<html>
<head>
<?php
function summiere()
{
echo "Variable z: $z<p>";
global $x;
$y = 35;
$z = $x + $y;
echo "Variable z: $z<p>";
}
?>
</head>
<body>
<?php
$x = 6;
$y = 52;
$z = $x + $y;
summiere();
echo "Variable z: $z<p>";
?>
</body>
</html>

In diesem Programm existieren insgesamt fünf unterschiedliche Variablen. Die beiden Variablen $y und $z in der Funktion summiere() sind nur dort lokal bekannt. Zum Zeitpunkt des ersten Ausgabebefehles in der Funktion existiert $z noch nicht, daher wird kein Wert ausgegeben. Nach Verlassen der Funktion summiere() sind beide Werte nicht mehr verfügbar. Im Hauptprogramm gibt es insgesamt drei Variablen: $x, $y und $z. Das Schlüsselwort global sorgt dafür, dass $x auch in der Funktion summiere() mit seinem Wert bekannt ist. $y und $z sind nur außerhalb von Funktionen bekannt.