Suchen
PHP-Funktionen
Wie sieht eine Bedingung aus?
Eine Bedinung ermöglicht es, dass Code nur dann ausgeführt wird, wenn der Ausdruck der Bedingung wahr ist. Um Bedingungen arbeiten zu können, ist es erforderlich zunächst einige Operatoren kennen zu lernen.
Operatoren
Operatoren sind Teile der Grammatik einer Programmiersprache. Wenn dir jetzt noch nicht klar ist, was ein Operator ist, wird es dir spätestens bei der Beispielen weiter unten auf dieser Seite klar warden. Zum Arbeiten mit Bedingungen sind die wichtigsten Operatoren wohl die folgenden Vergleichsoperatoren:1 < kleiner als 2 <= kleiner oder gleich 3 > größer als 4 >= größer oder gleich 5 == gleich 6 != ungleich
Mit diesen Operatoren ist es möglich eine einzelne Bedingung zu überprüfen. Für eine Und- oder Oder-Verknüpfung sind folgende Operatoren zuständig:
1 && Und-Verknüpfung 2 || Oder-Verknüpfung
Für die Und- und Oder-Verknüpfung gibt es noch weitere Operatoren. Um den Einstieg nicht unnötig zu erschweren, beschränken wir uns zunächst auf die oben genannten Operatoren.
Bedingungen
Ähnlich wie in anderen Programmiersprachen gibt es auch in PHP Anweisungen, um Bedingungen zu formulieren. Eine Bedingung wird durch das Schlüsselwort "if" eingeleitet. Innerhalb einer nachfolgenden offenen und geschlossenen Klammer "( und )" wird die Bedingung formuliert. Folgen nach der Bedingung mehrere Anweisungen, so müssen diese durch eine offene und geschlossene geschweifte Klammer "{ und }" in einem Block zusammengefasst werden. Wenn nur eine Anweisung folgt, können die geschweiften Klammern weg gelassen werden.1 $var = 1; 2 3 if($var == 1) 4 { 5 echo '$var ist 1'; 6 $var = 3; 7 } 8 9 if($var == 1) 10 echo '$var ist 1';
Manchmal ist es erforderlich, dass anderer Code ausgeführt wird, wenn die Bedingung nicht zutrifft. In PHP gibt es dafür das Schlüsselwort else.
1 $var = 2; 2 3 if($var <= 1) 4 echo '$var ist kleiner oder gleich 1'; 5 else 6 { 7 echo '$var ist größer als 1'; 8 $var--; 9 }
Durch das Schlüsselwort elseif können Bedingungen weiter verzweigt werden.
1 $var = 3; 2 3 if($var <= 1) 4 echo '$var ist kleiner oder gleich 1'; 5 elseif($var == 2) 6 { 7 echo '$var ist 2'; 8 $var = 10; 9 } 10 else 11 echo '$var ist größer als 2';
Anstelle von elseif kann auch else if geschrieben werden.
Der ternäre Operator
Der ternäre Operator hat den folgenden Aufbau:1 Bedingung ? Wert1 : Wert2;
Wenn die Bedingung wahr ist, wird Wert1 zurückgegeben. Wenn die Bedingung falsch ist, wird stattdessen Wert2 zurückgegeben. Den ternären Operator kann man wie folgt verwenden:
1 $var = 1; 2 3 echo $var == 1 ? '$var ist 1' : '$var ist nicht 1'; 4 5 // Das entspricht in etwa dem folgendem Code: 6 if($var == 1) 7 echo '$var ist 1'; 8 else 9 echo '$var ist nicht 1';
Der ternäre Operator eignet sich nicht für Blöcke und Pfade im Script. Für die Bedingte Ausgabe einer Zahl oder Zeichenkette ist er wegen der kurzen Schreibweise gut zu gebrauchen. Ich verwende ihn häufig, um zwischen Einzahl und Mehrzahl zu unterscheiden. Angenommen in folgendem Script ist die Variable $counter ein Zähler für die Anzahl von Einträgen in einem Gästebuch:
1 echo 'Das Gästebuch hat bereits ' . $counter; 2 echo $counter == 1 ? ' Eintrag' : ' Einträge';
Wenn das Gästebuch einen Eintrag hat, wird die Einzahl von "Eintrag" angezeigt, sollten 0 oder mehr als ein Eintrag vorhanden sein, wird die Mehrzahl verwendet.
Weitere Operatoren
Es gibt noch weitere Operatoren in PHP. Im Rahmen dieser Einführung möchte ich noch die Klammerungsoperatoren und dern Verneinungsoperator erläutern. Mit den Klammerungsoperatoren kann die Reihenfolge geändert werden, in der die einzelnen Ausdrücke ausgewertet werden. Man kann sich das genauso vorstellen wie in der Mathematik: 2 + 2 * 2 ist 6. Wenn man diese Rechenaufgabe entsprechend Klammert (2 + 2) * 2 ergibt diese 8. Ähnlich verhält es sich mit den Ausdrücken in einer Bedingung. So wie in der Mathematik Punkt- vor Strichrechnung gilt, ist der Operator && höherwertiger als der Operator ||.1 if(true || false) ... // evaluiert zu true 2 if((true && false) || true) ... // evaluiert zu true 3 if(true && false || true) ... // evaluiert zu true 4 if(true && (false || true)) .. // evaluiert zu true 5 if(false && false || true) .. // evaluiert zu true 6 if(false && (false || true)) .. // evaluiert zu false
Der Verneinungsoperator kehrt einen evaluierten Wert um, das heisst: true wird zu false und false wird zu true. Ein Beispiel:
1 if(!(true || false)) ... // evaluiert zu false 2 if(!((true && false) || true)) ... // evaluiert zu false 3 if(!(true && false || true)) ... // evaluiert zu false 4 if(!(true && (false || true))) .. // evaluiert zu false 5 if(!(false && false || true)) .. // evaluiert zu false 6 if(!(false && (false || true))) .. // evaluiert zu true
Ich empfehle die bisher erworbenen Kenntnisse auf dem installierten Webserver zu erproben, bevor du mit dem nächsten Artikel fortfährst. So wird vieles klarer und ist ingesamt nicht mehr so theoretisch. Wenn du dich sicher genug in der Anwendung fühlst, kann es sofort weiter gehen.
Ein switch-Block
Ähnlich wie in C und Java gibt es auch in PHP einen switch-Block. Ein solcher Block enthält eine Liste von "Schaltern", besser gesagt Bedingungen. Mit einem switch-Block kann in erster Linie der Zustand bzw. der Inhalt einer einzigen Variable angeprüft werden. Die Variable muss dabei eine Zahl oder eine Zeichenkette enthalten. In PHP kann ein switch-Block noch mehr, zum Beispiel rechnen. Ein switch-Block ist wie folgt aufgebaut:1 $var = 2; 2 3 switch($var) 4 { 5 case 1: 6 echo '$var ist großer oder gleich 1'; 7 8 case 2: 9 echo '$var ist großer oder gleich 2'; 10 11 case 3: 12 echo '$var ist großer oder gleich 3'; 13 }
Wenn man diesen Code ausführt, werden die ersten beiden Zeilen ausgegeben. Das liegt daran, dass der gesamte Code ausgeführt, der nach dem ersten Zutreffenen case bzw. Fall zutrifft. Um dies zu verhindern, gibt es das Schlüsselwort break (dieses wird uns im Artikel zu den Wiederholungsstrukturen wieder begegnen). In diesem Fall sorgt das Schlüsselwort break dafür, dass der switch-Block verlassen wird.
1 $action = 'edit'; 2 3 switch($action) 4 { 5 case 'new': 6 case 'create': 7 /* Dein Code */ 8 break; 9 10 case 'edit': 11 case 'modify': 12 /* Dein Code */ 13 break; 14 15 case 'delete': 16 case 'remove': 17 /* Dein Code */ 18 break; 19 20 default: 21 echo 'Es wurde keine Aktion ausgewählt!'; 22 }
Obiges Beispiel könnte zum Beispiel verwendet werden, um den Wert der Variable $action auszuwerten. Je nachdem, welchen Wert sie enthält, wird ein anderer Codeblock bis zum break ausgeführt. Die Anweisung default hat eine besondere Bedeutung: Wenn keine der Bedingungen zutrifft, wird der folgende Code-Block stattdessen ausgeführt. Diese Anweisung sollte zweckmäßiger Weise am Ende eines switch-Blockes stehen. Sie entspricht etwa dem else von einer vorhergehenden Abfrage. Wie man sieht, können die case Anweisungen auch untereinander stehen. Der folgende Code wird ausgeführt, wenn einer der Fälle zutrifft.
Den obigen Code könnte man natürlich auch mit einer Reihe von if, elseif und else darstellen:
1 $action = 'edit'; 2 3 if($action == 'new' || $action == 'create') 4 { 5 /* Dein Code */ 6 } 7 elseif($action == 'edit' || $action == 'modify') 8 { 9 /* Dein Code */ 10 } 11 elseif($action == 'delete' || $action == 'remove') 12 { 13 /* Dein Code */ 14 } 15 else 16 { 17 echo 'Es wurde keine Aktion ausgewählt!'; 18 }
Man könnte die Liste der möglichen Werte zum "Erstellen" unendlich fortführen. Irgendwann würde diese Liste in der if-Abfrage eventuell unübersichtlich. Welche Methode verwendet wird, hängt letzten Endes immer vom Programmierer ab.