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.