Variablen


Umgang mit Variablen

Programmverzweigungen sind entweder vom Vorhandensein, vom Typ oder vom Wert einer Variablen abhängig. Funktionen, die Auskunft über den Status von Variablen geben, findet man daher vorwiegend bei der Initiierung von Fallunterscheidungen oder Schleifen.

„empty ()“ und „isset ()“
Mit „empty ()“ kann überprüft werden, ob eine Variable vorhanden ist und wenn ja, ob sie einen Wert enthält, der nicht gleich 0 ist. Die Funktion „isset ()“ prüft lediglich, ob eine Variable vorhanden ist – sie liefert „1“ für true zurück, selbst wenn die Variable leer ist. Wenn also ein Inhalt zwingend vorhanden sein soll, damit das Programm in eine bestimmte Schleife abzweigt, ist „empty ()“ die sichere Methode. Zu beachten ist jedoch, dass sich diese Funktion nicht zur Prüfung von Zahlenwerten eignet, bei dem die Variable unter Umständen den Wert 0 annimmt. Das Nichtvorhandensein einer Variablen prüft man, indem man vor die Funktionen ein Rufzeichen „!“ setzt.

„print_r ()“, „var_dump ()“ und „gettype ()“
Häufig will man mehr über eine Variable erfahren als nur, ob sie überhaupt da ist. Dafür stehen die Befehle „print_r ()“, „var_dump ()“ und „gettype ()“ zur Verfügung. Sie sind in erster Linie dafür da, Informationen über Variablen am Bildschirm auszugeben und finden daher überwiegend bei der Fehlersuche Verwendung. „print_r ()“ liefert den Inhalt, „var_dump ()“ den Inhalt und den Datentyp und „gettype ()“ lediglich den Datentyp einer Variablen. Besonders interessant ist, dass mit „print_r ()“ und „var_dump ()“ auf einfache Art der Inhalt eines Arrays angezeigt werden kann, ohne dass dies erst umständlich in einer Schleife durchlaufen werden muss.

„is_string ()“, „is_int ()“ und „is_numeric ()“
Eine Variable kann entweder eine Zahl oder eine Zeichenkette als Wert haben. Mit „is_string ()“ wird abgefragt, ob sie eine Zeichenkette enthält. „is_int ()“ liefert Auskunft darüber, ob es sich um eine ganze Zahl handelt. „is_numeric ()“ prüft, ob die Variable überhaupt eine Zahl ist. Dabei erkennt diese Funktion auch Zahlen, die als Zeichenketten daherkommen. Wenn es zum Beispiel Formulareingaben zu überprüfen gilt, die immer als Zeichenketten übermittelt werden, muss man „is_numeric ()“ benutzen, um festzustellen, ob man es mit einer Zahl zu tun hat.

Operatoren
Variablen können miteinander verglichen werden und es lässt sich mit ihnen rechnen, sofern sie Zahlen zum Inhalt haben. Zum Rechnen stehen die Operatoren plus, minus, mal, geteilt durch und Rest der Division (+, -, *, /, %) zur Verfügung. Für den Vergleich von Variablen gibt es die Operatoren gleich, ungleich, größer, kleiner, größer gleich und kleiner gleich (==, !=, >, <, >=, <=).

Logische Operatoren
Schließlich können Vergleiche noch über die logischen Operatoren und, oder, exklusiv oder und nicht (and, or, xor, !) miteinander verbunden werden. „and“ ergibt true, wenn alle Werte true sind; „or“, wenn mindestens einer der Werte true ist; „xor“, wenn nur ein einziger Wert true ist; „!“, wenn die Variable false ist.

„unset ()“
Zum guten Programmierstil gehört, eine Variable oder ein Array wieder zu löschen, sobald sie nicht mehr benötigt werden, um so den Arbeitsspeicher wieder freizugeben. Das geschieht mit der Funktion „unset ()“. Als Parameter können der Funktion beliebig viele Variablen oder Arrays übergeben werden, die dann nachher nicht mehr für das Programm verfügbar sind.

Im folgenden Beispiel werden die Variablen $name, $geschlecht und $alter, die über ein Formular übergeben worden sind, geprüft und weiterverarbeitet. Handelt es sich bei $alter um einen Nutzer von unter 16 Jahren, soll er in der Anrede geduzt werden, ansonsten wird ein „Sie“ geschrieben. Ist eine der drei Variablen nicht vorhanden, wird eine Fehlermeldung ausgegeben.

<?php
if ((!empty ($name)) and (!empty ($geschlecht)) and (!empty ($alter))){ //alle Daten vorhanden
if (is_numeric ($alter)){ //eine Zahl wurde übermittelt
$anrede = „Sehr geehrter Herr $name,“; //Standardmeldung (für einen Mann)
if ($geschlecht == „Frau“){ //wenn es sich um eine Frau handelt
$anrede = „Sehr geehrte Frau $name,“; //Standardmeldung wird geändert
}
//$anrede wird erweitert und mit einem Punkt verknüpft
$anrede = $anrede . „vielen Dank, dass Sie an der Umfrage teilnehmen.“;
if ($alter < 16){ //unter 16-Jährige werden geduzt
$anrede = „Hallo $name, vielen Dank, dass Du an der Umfrage teilnimmst.“;
}
echo $anrede;
}
elseif (!is_numeric ($alter)){
echo „Geben Sie bitte Ihr Alter in Jahren an.“;
}
}
else {
echo „Die Formulardaten sind nicht vollständig“;
}
?>

Zunächst wird festgestellt, ob alle Daten vorhanden sind (if – engl. wenn). Nur, wenn das der Fall ist, erfolgt die Auswertung. Fehlt irgendetwas, wird der folgenden Block übersprungen und es geht in den Block else (engl. andernfalls), wo eine Fehlermeldung ausgegeben wird. Mit „is_numeric“ wird geprüft, ob eine Zahl übermittelt wurde. Wenn nicht, geht es direkt in den „elseif“-Block (engl. wenn nicht), wo wieder eine Fehlermeldung ausgegeben wird. Sind bisher alle Daten korrekt, geht es nun an die Auswertung. Zunächst wird eine Standardanrede festgelegt, die für alle Männer gilt und die, falls es sich um eine Frau handelt, korrigiert wird. Im Anschluss wird $anrede um die eigentliche Meldung erweitert. Ist der Nutzer unter 16 Jahren, wird alles wieder verworfen und $anrede wird entsprechend angepasst. Zum Schluss wird über „echo“ der Text ausgegeben.

Mit Javascript lassen sich die Inhalte von Formularfeldern übrigens bereits vor dem Absenden überprüfen.

Variablenübergabe
Die Kommunikation zwischen Nutzer und PHP erfolgt über Variablen, die untereinander ausgetauscht werden. Sie werden entweder über ein Formular oder aber als URL-Anhang in der Browserzeile übergeben. Wird ein Formular genutzt, bekommt die Variable jeweils den Namen des Formularfeldes, sein Inhalt ist ihr Wert. Bei der Übergabe in der Browserzeile wird an die Adresse ein Fragezeichen „?“ angehängt, gefolgt vom Namen der Variablen, einem Gleichheitszeichen „=“ und dem Wert. Weitere Variablen werden, durch ein kaufmännisches Und „&“ getrennt, angehängt.

//Variablenübergabe per Formular
<form method=“post“ action=“http://www.Ihre-Domain.de/php-datei.php“>
<input type=“text“ name=“name“ value=“meier“>
<input type=“text“ name=“alter“ value=“30″>
</form>
//Variablenübergabe in der URL
http://www.Ihre-Domain.de/php-datei.php?name=meier&alter=30