0251 / 590 837 15

Operatoren in PHP

Was wäre die Informatik ohne Operatoren? Eigentlich nicht vorstellbar, denn dann hätten Programme genauso viel Interaktivität wie ein Buch. Man kann die Ausgaben lesen und das war's.

Grundlegendes nach oben

Genau wie in der Mathematik gibt es auch bei den Operatoren eine Rangfolge, die die Reihenfolge der Ausführung der Operatoren mit ihren Parametern bzw. Ausdrücken festlegt.

$a=1+2*3; $b=(1+2)*3; echo $a," <-> ",$b; //Ausgabe: '7 <-> 9'

Die Rangfolge der in PHP verfügbaren Operatoren ist folgende:

Rang Operator Richtung
1. (bool) (int) (float) (string) (array) (object) ! ~ ++ -- @ rechts
2. * / % links
3. - + . links
4. << >> links
5. > >= < <= ohne
6. == != === ohne
7. & links
8. ^ links
9. | links
10. && links
11. || links
12. ? : links
13. alle Zuweisungsoperatoren (= += -= *= /= .= ....) links
14. and links
15. xor links
16. or links

Arithmetische Operatoren nach oben

Die Arithmetischen Operatoren sind diejenigen, die den Grundrechenarten entsprechen und wir auf jeden Fall noch aus der Schule kennen.

Operator Symbol Beispiel Funktionsweise
Addition + $a + $b addiert beide Werte
Subtraktion - $a - $b subtrahiert rechten Wert vom linken
Multiplikation * $a * $b multipliziert beide Werte
Division / $a / $b dividiert linken Wert durch rechten (Ergebnis ist immer eine Gleitkommazahl)
Modulodivision % $a % $b ergibt Rest der Ganzzahlendivision des linken Werts durch den rechten

Logische Operatoren nach oben

Unter dem Begriff logische Operatoren fasst man all jene zusammen, die mit Booleeschen Werten operieren und diese auch als Ergebnis liefern. Davon werden uns insgesamt 7 zur Verfügung gestellt, wovon allerdings jeweils drei das gleiche Ergebnis liefern und sich nur in der Rangfolge unterscheiden.

Operator Symbol Beispiel Funktionsweise
Und and, && $a and $b, $a && $b true, wenn beide Werte true sind
Oder or, || $a or $b, $a || $b true, wenn mindestens ein Wert true ist
Exklusiv-Oder xor, ^ $a xor $b, $a ^ $b true, wenn beide Werte unterschiedlich sind
Nicht ! ! $a true, wenn der Wert false ist (Negation)

Bitweise Operatoren nach oben

Bitweise Operatoren sind diejenigen, die auf die einzelnen Bits der Werte angewandt werden und somit eine Manipulation der einzelnen binären Stellen eines skalaren Datentyps erlaubt. In PHP gibt es 6 davon:

Operator Symbol Beispiel Funktionsweise
Und & 101 & 011 = 001 ergibt 1, wenn beide Bits 1 sind
Oder | 101 | 011 = 111 ergibt 1, wenn eines der beiden Bits 1 ist
Exklusiv-Oder ^ 110 ^ 011 = 101 ergibt 1, wenn beide Bits unterschiedlich sind
Nicht ~ ~0101 = 1010 ergibt 1, wenn das Bit 0 ist (Negation)
Rechtsverschiebung >> 0110 >> 1 = 0011 verschiebt die Bits um die angegebene Anzahl nach rechts
Linksverschiebung << 0110 << 2 = 11000 verschiebt die Bits um die angegebene Anzahl nach links
Wendet man diese Operatoren auf eine Zeichenketten an, so werden die Operationen mit den stellenentsprechenden einzelnen Zeichen durchgeführt.

echo ord("ab")," xor ",ord("z")," ergibt ",ord("ab" ^ "z");

Vergleichsoperatoren nach oben

Vergleichsoperatoren werden, wie der Name schon sagt, für Vergleiche verwendet. Das Ergebnis einer Vergleichsoperation ist immer ein boolescher Wert. In PHP gibt es insgesamt 9.

Operator Symbol Beispiel Funktionsweise
Gleichheit == $a==$b true, wenn beide Werte gleich sind
Ungleichheit != $a!=12 true, wenn beide Werte ungleich sind
Gleichheit, typgenau === $a===$b true, wenn beide Werte und Typen gleich sind
Ungleichheit, typgenau !== $a!==$b true, wenn beide Werte oder Typen ungleich sind
Größer als > $a>12 true, wenn linker Wert größer als der rechte ist
Kleiner als < $a<$c true, wenn linker Wert kleiner als rechter ist
Größer gleich >= $a>=$b true, wenn linker Wert größer oder gleich dem rechten ist
Kleiner gleich <= $a<=1 true, wenn linker Wert kleiner oder gleich dem rechten ist

Zuweisungsoperatoren nach oben

Während in Pascal nur ein einziger Zuweisungsoperator, und zwar das ":=" existiert, kann da PHP , wie C auch, mit einigem mehr aufwarten.

Operator Symbol Beispiel Funktionsweise
Zuweisung = $a=3 linke Variable erhält den Wert der rechten Seite
Additive Zuweisung += $a+=5 linke Variable wird um den Wert der rechten Seite erhöht
Subtraktive Zuweisung -= $a-=$b linke Variable wird um den Wert der rechten Seite dekrementiert
Multiplikationszuweisung *= $a*=$b linke Variable wird mit dem rechten Wert multipliziert
Divisionszuweisung /= $a/=12 linke Variable wird durch den Wert der rechten Seite dividiert
Modulozuweisung %= $a%=$c mit linker Variable wird eine Moduladivision durch den rechten Wert durchgeführt
Bitweise Verknüpfungen und Zuweisungen &=, |=, ^= $a&=$b bitweises Und, Oder, Exklusiv-Oder der linken Variablen mit dem rechten Wert
Bitweise Verschiebungen und Zuweisung <<=, >>= $a<<=1 bitweise Verschiebung nach rechts bzw. links der Bits der linken Variablen um den Wert der rechten Seite
Logische Verknüpfungen und Zuweisungen &&=, ||= $a&&=$b logische Verknüpfung der linken mit der rechten Seite, wobei das Ergebnis der Variable links zugewiesen wird
Stringverkettung .= $a.=".txt" der Variablen links wird der Wert rechts angehängt
Der Wert eines Zuweisungsausdrucks ist der zugewiesene Wert, dass heißt das der Wert einer Zuweisung $a+=5, wenn $a=4 war, 9 beträgt. Hierbei ist zu beachten, dass die Auswertung eines Ausdrucks immer von rechts nach links erfolgt!

$a=($b=3)+4; //$a hat jetzt den Wert 7, $b den Wert 3 $a+=$b+=1; //$a ist jetzt 11 und $b gleich 4

Inkrement- / Dekrementoperatoren nach oben

Wie in C auch gibt es in PHP diese Operatoren in den Varianten Prä~ und Post~. Wie man sich sicherlich denken kann, werden Präoperatoren zuerst und Postoperatoren danach notiert und auch ausgeführt.

$a=1; $a++; //Postinkrement --$a; //Prädekrement

Beim Präoperator wird zuerst der Operator ausgeführt und dann der Wert zurückgegeben, beim Post-operator umgekehrt.

$a=1; //a=1 $b=$a++; //b=1, a=2 $c=++$a; //c=3, a=3

Operator Symbol Beispiel Funktionsweise
Präinkrement ++ ++$a Erhöht erst, liefert dann den Wert
Prädekrement -- --$a Verringert erst, liefert dann den Wert
Postinkrement ++ $a++ Liefert den Wert, erhöht dann
Postdekrement -- $a-- Liefert dan Wert, verringert dann

Zeichenkettenoperatoren nach oben

PHP kennt insgesamt drei Zeichenkettenoperatoren, wobei einer bereits im Abschnitt Zuweisungsoperatoren behandelt worden ist, und der andere im Abschnitt Arrayoperatoren noch behandelt wird.

Operator Symbol Beispiel Funktionsweise
Verkettung . $c=$a.$b verbindet zwei Zeichenketten miteinander
Verkettung und Zuweisung .= $a.=$b hängt die Zeichenkette auf der rechten Seite an die linke an
Zeichenindizierung [X] $a[2] gibt das Zeichen an entsprechender Position der Zeichenkette zurück

$text="Mein"; echo $text,"n"; $text.=" Text ist vom Typ ".gettype($text); echo $text,"n"; $text[0]="K"; echo $text,"n";

Der Indexoperator [] behandelt die Zeichenkette wie ein Array und erlaubt somit einen Zugriff auf die Zeichen an den einzelnen Stellen der Kette.

Arrayoperatoren nach oben

Dieser Abschnitt fällt relativ kurz aus, da PHP nur zwei Array-Operatoren kennt: die Array-Verkettung und den Index-Operator.

Operator Symbol Beispiel Funktionsweise
Verkettung + $c=$a+$b verbindet zwei Arrays miteinander
Indizierung [] $a['name'] liefert das Element mit dem angegebenen Schlüssel
Beim Verketten von Arrays ist zu beachten, dass gleiche Schlüssel nicht überschrieben werden, wobei das linke Array immer Vorrang hat.

$a=array('name'=>'Fred','alter'=>30,'plz'=>93221); $b=array('name'=>'Bernd','ort'=>'Brügge'); $c=$a+$b; print_r($c);

Der Indexoperator ist ebenfalls schnell erklärt: in den eckigen Klammer wird der Schlüssel des gewünschten Elements angegeben. Indiziert man auf diese Weise einen Schlüssel, der im Array noch nicht existiert, so wird dieses Element neu angelegt.

//assoziatives Array $a=array('name'=>'Fred','alter'=>30,'plz'=>93221); //Liste $b=array(1234,5678,91011); echo $b[2],"n"; //gibt letztes Element von $b aus $b[5]=$a; //hängt an Index 5 das Array $a an $b[2]=$a['name']; //Index 2 von $b ist jetzt das Element 'name' von $a print_r($b);

Fehleroperator nach oben

Ein weitere Operator ist das @-Zeichen, der Fehleroperator. Stellt man diesen einem PHP-Befehl voran, so werden alle von diesem Aufruf erzeugten Fehlermeldungen unterdrückt.

phpinfo(TEST); //erzeugt Warnung, die Konstante TEST ist unbekannt @phpinfo(TEST); //nichts passiert