====== 1.12.3) Der Gültigkeitsbereich von Variablen ====== Auf Variablen, die Sie außerhalb einer Funktion im PHP-Programm einsetzen, können Sie in Funktionen nicht ohne weiteres zugreifen und mit ihnen arbeiten. Ebenso gibt es innerhalb einer Funktion Variablen, auf die Sie außerhalb der Funktion nicht zugreifen können. Variablen haben, je nachdem, wo sie definiert sind, unterschiedliche Gültigkeitsbereiche. * **Lokale Variablen** sind nur innerhalb der Funktion, in der sie definiert wurden, gültig. * **Globale Variablen**, die außerhalb von Funktionen definiert wurden, haben standardmäßig nur außerhalb der Funktionen ihren Gültigkeitsbereich. Die globalen Variablen stehen innerhalb einer Funktion nicht zur Verfügung. Sollen die globalen Variablen innerhalb einer Funktion gültig sein, müssen sie dort mit dem Schlüsselwort global bekannt gemacht werden, z. B. global $zahl. * **Superglobale Variablen** stehen sowohl innerhalb als auch außerhalb von Funktionen zur Verfügung, beispielsweise das assoziative Feld $_POST. Im folgenden Beispiel werden globale und superglobale Variablen gegenübergestellt. Hierzu wird ein Bestell-Formular für Äpfel erstellt. Anhand des PHP-Codes im Auswertungsprogramm wird gezeigt, wann welche Variablen gültig sind. **Beispiel:** formular_funktion.html, funktion_var.php

Apfelkauf

Bitte geben Sie die gewünschte Menge ein und wählen Sie eine Apfelsorte:
Menge:

Apfelsorte:
Jonagold Gala Elstar

* Mithilfe der Methode ''POST'' werden nach Absendung des Formulars folgende Variablen an das Auswertungsprogramm ''funktion_var.php'' weitergegeben: * die Variable $menge, die vom Benutzer eingetragen wird, und * die Variable $sorte, die der Benutzer mithilfe eines Optionsfeldes auswählt {{:inf:inf7b_201011:php:php5-s60.jpg?400|Beispieldatei "formular_funktion.html"}} "; echo "Bearbeiter: " .$bearbeiter ."
"; echo "Die von Ihnen eingegebene Menge: ".$_POST["menge"]." kg
"; switch($_POST["sorte"]) { case "Jonagold": $preis=$_POST["menge"]*1.50; // lokale Variable break; case "Gala": $preis=$_POST["menge"]*1.65; // lokale Variable break; case "Elstar": $preis=$_POST["menge"]*2.00; // lokale Variable break; } echo "Ausgabe des Preises innerhalb der Funktion: $preis
"; } echo "Die von Ihnen gewählte Sorte: ".$_POST["sorte"]."
"; bestellung() ; echo "Ausgabe des Preises außerhalb der Funktion: $preis
"; ?>
* Die Variablen $bestellnummer und $bearbeiter werden als **globale** Variablen im Programm definiert. * Die **globale** Variable $bestellnummer wird innerhalb der Funktion ''bestellung()'' mithilfe des Schlüsselwortes ''global'' bekannt gemacht. * Die Variablen $bestellnummer und $bearbeiter sollen innerhalb der Funktion ausgegeben werden. Da die Variable $bearbeiter innerhalb der Funktion nicht mithilfe des Schlüsselwortes ''global'' bekannt gemacht wurde, wird sie bei der Ausgabe nicht angezeigt. * Der Wert des **superglobalen** Feldes $_POST["menge"] wird innerhalb der Funktion ''bestellung()'' ausgegeben. * Innerhalb der Funktion ''bestellung()'' wird der Wert der **lokalen** Variablen $preis berechnet. * Die **lokale** Variable ''$preis wird innerhalb der Funktion ausgegeben. * Der Wert des **superglobalen** Feldes $_POST ["sorte"] wird außerhalb der Funktion ''bestellung()'' ausgegeben. * Die Funktion ''bestellung()'' wird aufgerufen. * Die **lokale** Variable $preis soll auch außerhalb der Funktion ausgegeben werden. {{inf:inf7b_201011:php:php5-s61.jpg?400|Anzeige des Ausgabeprogramms "funktion_var.php"}}