|
Die vergleichs Operanten in PHP
|
|
==, !=
|
Nicht vergessen das == nicht das einfache = ist (Weist einerVariablen den Wert der 2. zu) Wenn die Vergleiche Probleme machen einfach nach einfachen "=" Ausschau halten. Hier liegt meist das Problem.
|
|
>, >=
|
größer als, größer oder gleich zum vergleichenden Operator
|
|
<, <=
|
kleiner als, kleiner oder gleich zum vergleichenden Operator
|
|
ungleich |
|
===, !==
|
absolut identischer Operator, die Vergleichsargumente müssen von selben Typ sein.
Das bedeutet das 0 !== "0" wahr ist. Denn Zahl ist ungleich Ziffer
|
|
Die Boolean oder logischen Operatoren
|
| expr1 || expr2, expr1 or expr2 |
Die Aussage ist wahr wenn einer oder beide Audrücke war sind.
Hinweis: or hat eine niedrigere Rangordnung als ||
$i = $i+$n or $i < 1 ist gleich zu ($i = $i+$n) || $i < 1
|
| expr1 xor expr2 |
Die Aussage ist nur dann wahr wenn eins der Audrücke war sind. Falsch wenn beider wahr oder beide falsch sind.
|
| expr1 && expr2, expr1 and expr2 |
Die Aussage ist nur dann wahr wenn beide Audrücke war sind.
Hinweis: and hat eine niedrigere Rangordnung als & $i = $i+$n and $i < 1 ist gleich zu ($i = $i+$n) && $i < 1
|
! expr1
|
Der NICHT Operator kehrt die logische Aussage um. Wahr (true) wird Falsch (false) und umgekehrt
|
|
Zeichenketten können durch die logischen Operatoren direkt verglichen werden.
Eine mögliche Fehlerquelle besteht aber darin das PHP versucht die Zeichenketten, falls möglich, in Zahlen umzuwandeln. Hieraus könnten unklare Ergebnisse resultieren. Um sicher zu gehen einfach die Funktion strcmp() verwenden. Diese liefert die sichersten Ergebnisse.
Noch ein Hinweis: Der Unterschied zwischen den "Nicht" Operatoren ! wird für logisch Vergleiche verwendet. ~ wird für bitweise Vergleiche verwendet.
|
|
Die bitweisen Operatoren
|
| var1 & var2 => und (and) Operator |
Nur Bits die in beiden Ausdrücken gesetzt sind (gleich 1) werden im Ergebnis gesetzt.
Also: 4 & 12 = 4 bzw. mit Bitdarstellung: 0100 & 1100 = 0100
|
| var1 | var2 => oder (or) Operator |
Bits die in einem der beiden Ausdrücke gesetzt sind (1) werden im Ergebnis gesetzt. Sonst 0. Also: 4 | 12 = 12 bzw. in Bitdarstellung: 0100 | 1100 = 1100 |
| var1 ^ var2 => xor Operator |
Bits die nur jeweils in einem Ausdruck gesetzt sind werden im Ergebnis gesetzt (1) sein sonst 0. Also: 4 ^ 12 = 8 in beiden Ausdrücken: 0100 ^ 1100 = 1000 |
| ~var1 => not operator |
Bits sind negiert.
Also: ~12 = 3 bzw. in Bitdarstellung: ~1100 = 0011
|
| var1 << n links verschieben Operator |
var1 Bit werden um n Positionen nach links verschoben. Dies entspricht var1 x 2**n
Also: 3 << 2 = 12 bzw. in Bitdarstellung 0011 << 2 = 1100
|
| va1 >> n => rechts verschieben Operator |
var1 Bit werden um n Positionen nach rechts verschoben. Dies entspricht var1 / 2**n
Also: 3 >> 2 = 0 bzw. in Bitdarstellung 0011 >> 2 = 0000
|
|
Kontrolle über die Befehlsfolge
|
|
if (Bedingung) Befehl; if (Bedingung){ ..Befehle; } if (Bedingung) Befehl else Befehl; if (Bedingung) Befehl; [elseif(Bedingung) Befehl;] [ else Befehl;] if (Bedingung){ ..Befehle;} [elseif(Befehl){ ..Befehle;} ] [else {..Befehle;}]
|
if Bedingungen werden in PHP voll unterstützt.
Die elseif Bedingung kann für eine weitere Bedingungprüfung angehängt werden. Mit Klammern können , {..Befehlsketten;}, als angegeben werden.
|
|
ternary operator: (Bedingung)? Ausruck1: Ausdruck2;
|
Manche mögens, andere nicht. $color = ($cnt++ % 2)? "blue" : "green";
|
|
switch (Ausdruck){ case Wert-1: case alternativer-Wert: [..state
|
|