Get Adobe Flash player

Wenn, oder, aber - die If, Else, elseif und case Anweisungen

Heute beschäftigen wir uns mit Fallunterscheidungen als wir fragen ob etwas zutrifft und handeln dementsprechend.

Zunächst werden wir nur die Operatoren "grösser" (>), "kleiner" (<) und "gleich" (==) nutzen um zum Ziel zu kommen.

 

Die IF Anweisung oder auch "wenn das tuhe dies"

Die Anweisung beginnt immer mit einem "if" gefolgt von der Bedingung welche von Klammern "()" eingefasst wird. In die Klammern wird auf ein Wahr (true) oder Flasch (false) geprüft. Wenn ein Wahr (true) bei dem vergleich ermittelt wird wird der Code welcher in Spitzenklammern "{}" eingefasst werden muss ausgeführt. Der Aufbau sehen dann so aus

if(bedingung){

  Code

}

Wir wollen nun bei einem Wert der größer als 2 ist eine Meldung ausgeben das der Wert größer als 2 ist.

$wert = 5;

if ($wert > 2) {
    Print "Der Wert ist größer als 2";
}


Erläuterung: Wenn (if) 5 ($wert) ist größer als (>) 2 gebe "Wert ist größer als 2" aus.
Ist der Wert nicht größer als 2 wird in diesem Beispiel nichts ausgegeben.

Was ist aber nun wenn er trotzdem etwas tun soll?

Dann benötigen wir zusätzlich noch das Else:

$wert = 1;

if ($wert > 2) {
    Print "Wert ist größer als 2";
}
else {
    Print "Wert ist kleiner oder gleich als 2";
}

In diesem Beispiel wird nun "Wert ist kleiner oder gleich als 2" ausgegeben da wir der Variable den Wert 1 zugewiesen haben. Somit ist der Wert nichtmehr größer als 2 und der Code im else wird ausgeführt.

Ich will aber wissen ob der Wert dann evtl 2 ist

Dazu haben wir 2 möglichkeiten, zum einen können wir innerhalb des else noch einen If else block packen:

if ($wert > 2) {
    Print "Wert ist größer als 2";
}
else {
    if ($wert == 2) {
        Print "Wert ist gleich 2";
    }
    else {
        Print "Wert ist kleiner als 2";
    }
}

 Oder aber wir nutzen das else if dafür:

if ($wert > 2) {
    Print "Wert ist größer als 2";
}
elseif ($wert == 2) {
    Print "Wert ist gleich 2";
}
else {
    Print "Wert ist kleiner als 2";
}

Nun prüfen wir zuerst "größer als 2?" wenn nicht dann Prüfen wir auf "gleich 2?" und falls das nicht zutrifft kommt das else.

Die Switch case Anweisung

 Mit dieser lassen sich zb Rechner Programmieren. Ein Switch Case baut sich folgenderma?en auf:

switch ($wert) {
    case "entsprechung":
        CODE
    break;
    default:
        CODE
}

Ein Switch Case vergleicht immer mit "==" also gleich bzw istgleich weshalb es sich bestens eignet um zb einen Taschenrechner zu Programmieren:

$wert1 = 5;
$wert2 = 2;
$rechenoperant = "+";

switch ($rechenoperant) {
    case "*":
        $ergebniss = $wert1 * $wert2;
    break;
    case "/":
        $ergebniss = $wert1 / $wert2;
    break;
    case "+":
        $ergebniss = $wert1 + $wert2;
    break;
    case "-":
        $ergebniss = $wert1 - $wert2;
    break;
    default:
        $ergbeniss = "Falser Operant verwendet";
}
print $ergebniss;

 Da in einem Switch case das case als einstiegtpunkt dient werden alle nachfolgenden aktion durchgeführt. Deswegen müssen wir im mitteilen das er nach erfolgreichem ausführen unseres codes im Falle des "+" nicht weiter das Switchcase abarbeiten soll. Das erreichen wir mit dem Schlüsselwort break;. Würden wir das nicht setzen würden alle nachfolgenden Anweisungen ausgeführt werden was in etwa hier so aussehen würde:

 

$ergebniss = 5+2;
$ergebniss = 5-2;
$ergebniss = "Falscher Operant verwendet";

Es würde also zuerst 7 in die "$ergebniss" Valiable geschrieben werden um dann mit 3 und danach von "Falscher Operant verwendet" überschrieben werden wenn wir keine break setzen würden.

Das "default" muss nicht verwendet werden. Dieses dient dazu um im falle keiner Übereinstimmung Code auszuführen.

Wozu ist es gut das ein break gesetzt werden muss?

Dazu ein Beispiel:

$bedingung = 'öffnen';

switch ($bedingung) {
    case 'ohne_schluessel':
         sperre_user();
         break;
    case 'mit_schlüssel':
         schliesse_auf();
    default:
        $durchgehen = true;
}

Viel Spass. Demnächst kommen dann die ersteln Schleifen an die reihe.