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.
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
<html> <body> <h2>Apfelkauf</h2> Bitte geben Sie die gewünschte Menge ein und wählen Sie eine Apfelsorte: <form action="funktion_var.php" method="post"> Menge: <input name="menge"><br><br> Apfelsorte:<br> <input type="radio" name="sorte" value="Jonagold">Jonagold <input type="radio" name="sorte" value="Gala">Gala <input type="radio" name="sorte" value="Elstar">Elstar<br><br> <input type="Submit" value="Abschicken"> <input type="Reset" value="Zurücksetzen"> </form> </body> </html>
POST werden nach Absendung des Formulars folgende Variablen an das Auswertungsprogramm funktion_var.php weitergegeben: <?php $bestellnummer = "TT1911"; $bearbeiter = "Mario Caspari"; function bestellung() {global $bestellnummer; // globale Variable echo "Bestellnummer: " .$bestellnummer ."<br>"; echo "Bearbeiter: " .$bearbeiter ."<br>"; echo "Die von Ihnen eingegebene Menge: ".$_POST["menge"]." kg<br>"; 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<br>"; } echo "Die von Ihnen gewählte Sorte: ".$_POST["sorte"]."<br>"; bestellung() ; echo "Ausgabe des Preises außerhalb der Funktion: $preis<br>"; ?>
bestellung() mithilfe des Schlüsselwortes global bekannt gemacht.global bekannt gemacht wurde, wird sie bei der Ausgabe nicht angezeigt.bestellung() ausgegeben.bestellung() wird der Wert der lokalen Variablen berechnet.bestellung() ausgegeben.bestellung() wird aufgerufen.