Quakenet/#php Tutorial

Hinweis: Wenn sie diese Seite von einer externen URL aufgerufen haben achten sie darauf das alle Kapitel aufeinander aufbauen. Stellen sie daher sicher dass sie alle vorherigen Kapitel gelesen haben, da sie sonst relevante Informationen übersehen.

Kontrollstrukturen

  1. Datentyp Boolean
  2. Kontrollstrukturen
  3. Alternative Ausführung
  4. Stolperfalle if();

1. Datentyp Boolean

In PHP gibt es einen Datentyp der theoretisch nur ein einzelnes Bit Speicherplatz benötig. Mit einem Bit können nur die zwei verschiedenen Wert 0 und 1 dargestellt werden. In Programmiersprachen spricht man eher von den Werten true (für 1) und false (für 0). Dieser Datentyp wird dazu verwendet um zu sagen ob etwas stimmt oder nicht. Umgs. sagt man etwas ist wahr oder etwas ist falsch.

In PHP werden die Programmcodes true und false verwendet um die entsprechenden boolischen Werte darzustellen. Groß- und Kleinschreibung ist dabei egal, jedoch wird oft die kleingeschriebene Schreibweise verwendet.

<?php
$var 
true;
$var2 false;
$var3 TRUE;
$var4 FaLsE;

$var5 'true'// dies ist der 4 zeichen lange String 'true', nicht der boolische wert true
?>

In PHP-Skripten wird dieser Datentyp für Kontrollstrukturen verwendet. Dadurch wird entschieden welcher Programmteil in einem Skript ausgeführt wird und welcher nicht.

2. Kontrollstrukturen

Kontrollstrukturen in PHP werden dazu verwendet den Programmfluss zu steuern. Die Steuerung ist dabei die Frage ob ein Programmcode ausgeführt werden soll oder nicht. Dazu verwendet man den Sprachkonstrukt if. Der Aufbau ist dabei wie folgt.

<?php
if (ausdruckanweisung
?>

Der Ausdruck wird von PHP verarbeitet und muss einen Wert zurückliefern. Dieser wird dann geprüft ob er dem boolischen Wert true entspricht. Wenn dies der Fall ist wird die folgende Anweisung ausgeführt. In den seltesten Fällen will man eine einzelne Anweisung steuern, daher gruppiert man mehrere Anweisungen mit den geschweiften Klammern { und } zusammen.

<?php
if (ausdruck) {
    
anweisung_1;
    
anweisung_2;
    
// ...
    
anweisung_n;
}
?>

Der zu prüfende Ausdruck kann dabei auch aus mehreren Ausdrücken zusammengesetzt werden, die dann mit den gängigen logischen Verknüpfungen and, or ! und xor verbunden werden.

3. Alternative Ausführung

Wenn man nun Programmteile mit einer if-Abfrage steuert möchte man manchmal auch einen alternativen Programmteil aufrufen falls die if-Abfrage nicht aufgerufen wurde. Bei einem Login heißt dies z.B. Wenn der Login gültig ist zeige den Adminbereich, sonst zeige das Loginformular. In PHP wird dies mit dem Schlüsselwort else realisiert, welches zu einem vorherigen if gehören muss.

<?php
if (login_gueltig) {
    
// zeige adminbereich
} else {
    
// zeige loginformular
}
?>

Analog könnte man auch ein neue if-Abfrage hinzufügen und den Ausdruck negieren.

<?php
if (login_gueltig) {
    
// zeige adminbereich
}
if (!
login_gueltig)
    
// zeige loginformular
}
?>

Dieser Programmierstil ist jedoch nicht zu empfehlen und kann in manchen Fällen sogar gar nicht möglich sein.

So eine alternative Programmausführung kann sogar mit elseif Strukturen erweitert werden. Dies ist ein Block der zwischen den if- und else-Block eingefügt wird und auch ein Ausdruck zum kontrollieren enthält.

<?php
if (cond) {
    
// tu was
} elseif (andere_cond) {
    
// mach jenes
} else {
    
// mach dies
}
?>

Dieser elseif Teil wird dann ausgeführt/geprüft wenn die vorherige If-Abfrage false ergab. Es können dabei auch mehrere elseif-Teile verwendet werden.

<?php
if (cond) {
    
// tu was
} elseif (andere_cond) {
    
// mach jenes
} elseif (und_andere_bedingung) {
    
// mach das
} elseif (bedingung) {
    
// php-code
} else {
    
// mach dies
}
?>

Die Bedingung die zuerst eintrifft wird dann ausgeführt und nur diese. Wenn keine Bedingung zutrifft wird der else-Teil ausgeführt.

4. Stolperfalle if();

Auch wenn if () aussieht wie ein Funktionsaufruf, es ist keiner. Ein Semikolon am Ende ist nicht nur fehlplaziert sondern unterbindet auch die korrekte Arbeitsweise die eigentlich erwartet wird. Als Beispiel nehmen wir folgenden Quellcode.

<?php
if (false); // <-- man beachte das ;
    
echo 'Foobar';
?>

Obwohl die Bedingung false ist wird die echo-Anweisung ausgeführt. Die If-Abfrage steuert nur die nächste Anweisung bzw. den nächsten Programmblock innerhalb von geschweiften Klammern. In diesem Fall ist es nicht die echo 'Foobar'; Zeile sondern das einzelne ; hinter der If-Abfrage. Der Quellcode sieht eigentlich wie folgt aus.

<?php
if (false)
    ;
echo 
'Foobar';
?>

Oder um es noch deutlicher zu machen.

<?php
if (false) {
    ;
}
echo 
'Foobar';
?>

Hier sieht man das die If-Abfrage nur eine leere Anweisung steuert, die Echo-Anweisung ist davon unberührt.

Fragen zum Kapitel

Keine Fragen zum Kapitel vorhanden

Zurück zu Weiter zu
Copyright © bei den OPs von #php.de/QuakeNet Valid XHTML 1.0 Strict Valid CSS!