Informatik :: PHP + MySQL :: Programmstrukturen in PHP

Programmstrukturen in PHP

[Verzweigungen] [Logische Ausdrücke] [Schleifen] [Programmsteuerung]

Auswahlstrukturen (Verzweigungen)

Unvollständige Alternative - IF-Klausel

Eine oder mehrere Anweisungen (Anweisungsblock) sollen nur ausgeführt werden, wenn eine Bedingung erfüllt ist.

Beispiel:

        if ($x<0)
        {
           echo "$x ist kleiner als Null";
        }

Im Beispiel wird die echo-Anweisung nur dann ausgeführt, wenn der Wert der php-Variablen $x kleiner als 0 ist.

Vollständige Alternative - IF-ELSE-Klausel

Wenn eine Bedingung erfüllt ist, soll eine oder mehrer Anweisungen (Anweisungsblock) ausgeführt werden, ansonsten (wenn die Bedingung nicht erfüllt ist) eine oder mehrere andere Anweisungen.

Beispiel:

        if ($x<0)
        {
          echo "$x ist kleiner als Null";
        }
        else
        {
          echo "$x ist nicht kleiner als Null";
        }

Im Beispiel wird die Anweisung echo "$x ist kleiner als Null"; ausgeführt, wenn $x<0 ist, ansonsten (wenn $x nicht kleiner 0 ist) wird die Anweisung echo "$x ist nicht kleiner als Null"; ausgeführt.

Fallauswahl (mehrfache Verzweigungen) - SWITCH-CASE-Klausel

Soll aus mehr als zwei verschiedenen Möglichkeiten ausgewählt werden können, dann eignet sich if-else nicht mehr ganz so gut, da die Verschachtelungstiefe mehrerer ineinander stehender if-Konstruktionen schnell ansteigt.

Mit switch-case ist dieses Problem recht einfach in den Griff zu bekommen. Dabei enthält switch die zu testende Variable und case wertet deren Inhalt dann aus.

Wichtig ist aber noch der break-Befehl, da case nur bis zur ersten zutreffenden Bedingung sucht und danach alle folgenden Befehle ausführen würde, wenn nicht mit break die switch-Abfrage beendet wird.

Der default-Eintrag ist dann nötig, wenn kein anderer Wert für die Variable zutrifft.

Beispiel:

        switch($x)
        {
          case 1: echo "x ist 1";
                  break;
          case 1.5: echo "x ist 1.5";
                  break;
          case 2: echo "x ist 2";
                  break;
          default: echo "x ist weder 1 noch 1,5 noch 2";
        }

Im Beispiel wird auf 4 verschiedene Anweisungen in Abhängigkeit des Wertes der php-Variablen $x verzweigt.


Seitenanfang

Logische Ausdrücke (Bedingungen)

Grundsätzlich gilt für alle Bedingungen:
Es existieren immer nur zwei mögliche Ergebnisse - entweder ja (wahr=true) oder nein (falsch=false).

Den dazu gehörenden Datentyp nennt man BOOLEAN.

Außer kleiner und größer gibt es noch mehr Vergleichsoperatoren:
$x==0 Ist $x gleich 0 Wertegleichheit
$x===0 Ist $x identisch 0 Werte- und Typengleichheit
$x!=0 Ist $x ungleich 0
$x>=0 Ist $x größer oder gleich 0
$x>0 Ist $x größer 0
$x<0 Ist $x kleiner 0
$x<=0 Ist $x kleiner oder gleich 0

Diese einfachen Bedingungen können auch durch logische Operatoren zu einer zusammengestzten Bedingung werden:
($x==0) || ($y==0) Ist $x gleich 0 oder $y gleich 0
($x==0) && ($y>0) Ist $x gleich 0 und $y größer als 0
($x==0) xor ($y>0) Ist $x gleich 0 entweder oder $y größer als 0
!$x negiert den logischen Ausdruck $x, d.h. aus wahr wird falsch und aus falsch wird wahr

Dazu kommen noch die bitweisen Operatoren:
~$x // invertiert alle Bits von $x
$x & $y // Bitweise und
$x | $y // Bitweise oder
$x ^ $y // Bitweise entweder oder
$x >> 1 // um 1 Bit rechtsschieben
$x << 1 // um 1 Bit linksschieben

Hinweis: Zur bitweisen Ausgabe einer Zahl kann decbin($zahl) genutzt werden.


Seitenanfang

Zyklische Strukturen (Schleifen)

Abweisender Zyklus (Schleife mit Abbruchbedingung am Anfang) - WHILE-Schleife

Da die Abfrage der Abbruchbedingung am Anfang erfolgt, kann es passieren, dass die Befehle innerhalb dieser Schleife eventuell nie durchlaufen werden.

Beispiel:

        $t = "Das ist Text! <BR>";
        $h = 0;
        while ($h<10)
        {
            echo $t;
            $h++;
        }

Im Beispiel wird zunächst der php-Variablen $t die Zeichenkette "Das ist Text! <BR>" übergeben und die php-Variable $h mit 0 belegt.
Im anschließenden Schleifenkopf while ($h<10) wird geprüft, ob $h kleiner als 10 ist.
Solange dies der Fall ist, werden die Schleifenanweisungen ausgeführt, d.h.
der Wert von $t ausgegeben und
$h um 1 erhöht (inkrementiert). Der Wert von $h beträgt jetzt also 1.
Es erfolgt die erneute Prüfung von $h<10 und die Schleife wird ein zweites mal abgearbeitet.
Nach dem 10. Schleifendurchlauf hat $h den Wert 10.
Die Prüfung von $h<10 fällt negativ aus und damit wird die Schleife beendet.

Nichtabweisender Zyklus (Schleife mit Abbruchbedingung am Ende) - DO-Schleife

Da die Abfrage der Bedingung am Ende erfolgt, werden die Befehle innerhalb dieser Schleife grundsätzlich mindestens einmal durchlaufen.
Sie eignen sich daher z.B. hervorragend für das Erzwingen einer bestimmten Nutzereingabe.

Beispiel:

        $eingabe = "";
        do
        {
          readfile("passworteingabe.html");
          $eingabe=$_POST["passwort"];
        }
        while ($eingabe!="x4y2z")

Im Beispiel wird zunächst die php-Variable $eingabe auf die leere Zeichenkette gesetzt.
Die Schleife wird ein erstes mal durchlaufen und somit $eingabe der Wert des von einem Nutzer gesendeten (geposteten) Passwortes übergeben.
Am Schleifenende erfolgt die Prüfung, ob $eingabe ungleich "x4y2z" ist.
Sollte also der Nutzer ein anderes Passwort als x4y2z eingegeben haben, ist diese Prüfung positiv. Damit wird die Schleife erneut durchlaufen.
Die Schleife wird also nur dann beendet, falls das richtige Passwort x4y2z gesendet wurde.

Zählzyklus (Zählschleife) - FOR-Schleife

Zählschleifen werden verwendet, wenn die Anzahl der Schleifendurchläufe bekannt ist.

Beispiel:

        $t = "Das ist der Text! <BR>";
        for ($h=0;$h<10;$h++)
        {
          echo $t;
        }

Hier passiert das Gleiche wie im Beispiel für die while-Schleife.
Die Zählschleife hat den Vorteil, dass alle zur Kontrolle der Schleife nötigen Informationen (Anfangswert, Abbruchbedingung, Änderung der Schleifenvariablen) im Schleifenkopf stehen.


Seitenanfang

Programmsteuerung

break

Mit "break [Zahl]" kann man jede beliebige Programmstruktur abbrechen. Der Parameter "Zahl" legt fest, wie viele Ebenen verlassen werden sollen.

continue

Mit "continue [Zahl]" kann man jede beliebige Programmstruktur unterbrechen und den nächsten Schritt (Schleifendurchlauf) erzwingen. Der Parameter "Zahl" legt fest, über wie viele Ebenen zurückgesprungen werden sollen.

exit

Mit "exit" kann man jedes beliebige php-Script komplett beenden.


Seitenanfang