PHP-Operatoren
Alle PHP-Operatortypen – arithmetisch, Vergleich, logisch, String, Array, Raumschiff und Null-Koaleszenz – mit Beispielen und Vorrangregeln.
Ein Operator nimmt einen oder mehrere Werte (sogenannte Operanden) und erzeugt daraus einen neuen Wert. Operatoren sind die Grundbausteine jedes Ausdrucks in PHP — sie ermöglichen arithmetische Berechnungen, den Vergleich von Werten, die Verknüpfung boolescher Bedingungen, die Zuweisung von Ergebnissen an Variablen und das Verbinden von Zeichenketten.
Dieses Kapitel behandelt jede Kategorie von PHP-Operatoren mit ausführbaren Beispielen: Arithmetik, Zuweisung, Vergleich, Logik, Inkrement/Dekrement, String, Array, den Raumschiff-Operator, den Null-Koaleszenz-Operator und wie die Rangfolge der Operatoren die Auswertungsreihenfolge bestimmt.
Arithmetische Operatoren
Arithmetische Operatoren führen die bekannten mathematischen Operationen auf Zahlen durch.
| Operator | Name | Beispiel | Ergebnis |
|---|---|---|---|
+ | Addition | 10 + 5 | 15 |
- | Subtraktion | 10 - 5 | 5 |
* | Multiplikation | 10 * 5 | 50 |
/ | Division | 10 / 4 | 2.5 |
% | Modulo (Rest) | 10 % 3 | 1 |
** | Potenzierung | 2 ** 4 | 16 |
<?php
$x = 10;
$y = 3;
echo $x + $y; // 13
echo $x - $y; // 7
echo $x * $y; // 30
echo $x / $y; // 3.3333333333333
echo $x % $y; // 1 (remainder of 10 / 3)
echo $x ** $y; // 1000 (10 to the power of 3)Hinweis: Anders als in vielen Programmiersprachen kürzt PHP's
/nicht ab.10 / 4ergibt2.5, nicht2. Verwendeintdiv()für die ganzzahlige Division. Der%-Operator arbeitet mit ganzen Zahlen; für Fließkomma-Reste verwendefmod().
Zuweisungsoperatoren
Der grundlegende Zuweisungsoperator ist = — er speichert den Wert auf der rechten Seite in der Variable auf der linken Seite. Jeder arithmetische Operator hat auch eine kombinierte (zusammengesetzte) Form, die eine Variable direkt aktualisiert.
| Operator | Entspricht |
|---|---|
$a += $b | $a = $a + $b |
$a -= $b | $a = $a - $b |
$a *= $b | $a = $a * $b |
$a /= $b | $a = $a / $b |
$a %= $b | $a = $a % $b |
$a .= $b | $a = $a . $b (string append) |
<?php
$total = 100;
$total += 20; // 120
$total -= 50; // 70
$total *= 2; // 140
echo $total; // 140Vergleichsoperatoren
Vergleichsoperatoren vergleichen zwei Werte und geben einen boolean (true oder false) zurück. Beachte den wichtigen Unterschied zwischen dem losen (==) und dem strikten (===) Vergleich.
| Operator | Name | true wenn... |
|---|---|---|
== | Gleich | Werte sind nach Typumwandlung gleich |
=== | Identisch | Werte und Typen sind gleich |
!= / <> | Ungleich | Werte sind nicht gleich |
!== | Nicht identisch | Werte oder Typen unterscheiden sich |
< | Kleiner als | linker Wert ist kleiner |
> | Größer als | linker Wert ist größer |
<= | Kleiner oder gleich | |
>= | Größer oder gleich |
<?php
var_dump(10 == "10"); // bool(true) — values match after juggling
var_dump(10 === "10"); // bool(false) — int vs string, types differ
var_dump(5 != 8); // bool(true)
var_dump(5 >= 5); // bool(true)Achtung: Bevorzuge
===, wenn Typen wichtig sind.0 == "abc"ist in modernem PHP (8.0+)false, aber der lose Vergleich hat immer noch überraschende Randfälle — der strikte Vergleich vermeidet sie.
Der Raumschiff-Operator <=>
Der Raumschiff-Operator vergleicht zwei Werte und gibt -1, 0 oder 1 zurück. Er ist am nützlichsten als Rückgabewert eines Sortier-Callbacks.
<?php
echo 1 <=> 2; // -1 (left is smaller)
echo 2 <=> 2; // 0 (equal)
echo 3 <=> 2; // 1 (left is larger)Logische Operatoren
Logische Operatoren verknüpfen boolesche Ausdrücke, typischerweise in if-Bedingungen.
| Operator | Name | true wenn... |
|---|---|---|
&& / and | Und | beide Seiten sind wahr |
|| / or | Oder | mindestens eine Seite ist wahr |
! | Nicht | der Operand ist falsch |
xor | Exklusives Oder | genau eine Seite ist wahr |
<?php
$age = 25;
$hasLicense = true;
var_dump($age >= 18 && $hasLicense); // bool(true)
var_dump($age < 18 || $hasLicense); // bool(true)
var_dump(!$hasLicense); // bool(false)
&&undandverhalten sich in Bedingungen gleich, haben aber eine unterschiedliche Rangfolge —and/orbinden lockerer als=, was überraschend sein kann. Verwende besser&&und||.
PHP wertet auch kurzschließend aus: Bei $a && expensive() wird die rechte Seite nie ausgewertet, wenn $a false ist.
Inkrement- und Dekrement-Operatoren
Diese Operatoren addieren oder subtrahieren 1 von einer Variable. Ihre Position (Prä vs. Post) beeinflusst, welchen Wert der Ausdruck annimmt.
| Operator | Wirkung |
|---|---|
++$x | Prä-Inkrement: zuerst inkrementieren, dann den neuen Wert zurückgeben |
$x++ | Post-Inkrement: den alten Wert zurückgeben, dann inkrementieren |
--$x | Prä-Dekrement |
$x-- | Post-Dekrement |
<?php
$x = 5;
echo $x++; // 5 (prints old value, then $x becomes 6)
echo $x; // 6
echo ++$x; // 7 (increments first, then prints)String-Operatoren
PHP hat zwei Operatoren, die speziell für Strings gedacht sind:
.— der Verkettungs-Operator, verbindet zwei Strings..=— der verkettende Zuweisungs-Operator, hängt an die Variable an.
<?php
$greeting = "Hello";
$greeting .= ", World!"; // append
echo $greeting; // Hello, World!
echo "PHP" . " " . "rocks"; // PHP rocksArray-Operatoren
Array-Operatoren arbeiten auf ganzen Arrays.
| Operator | Name | Beschreibung |
|---|---|---|
+ | Vereinigung | Schlüssel von rechts werden nur hinzugefügt, wenn sie links fehlen |
== | Gleichheit | gleiche Schlüssel-/Wertpaare |
=== | Identität | gleiche Paare, gleiche Reihenfolge, gleiche Typen |
<?php
$a = ["a" => 1, "b" => 2];
$b = ["b" => 99, "c" => 3];
print_r($a + $b);
// Array ( [a] => 1 [b] => 2 [c] => 3 )
// "b" keeps the LEFT value (2), "c" is addedNull-Koaleszenz-Operator ??
Der ??-Operator gibt seinen linken Operanden zurück, wenn er vorhanden und nicht null ist, andernfalls den rechten Operanden. Er ist der saubere Ersatz für isset()-Prüfungen.
<?php
$data = ["name" => "Ann"];
$name = $data["name"] ?? "Guest"; // "Ann"
$role = $data["role"] ?? "Member"; // "Member" — key missing, no warning
echo "$name / $role"; // Ann / MemberDie ??= Null-Koaleszenz-Zuweisung weist nur dann zu, wenn die Variable aktuell null oder nicht gesetzt ist: $config["theme"] ??= "dark";.
Operator-Rangfolge
Wenn ein Ausdruck mehrere Operatoren enthält, bestimmt die Rangfolge, welcher zuerst ausgeführt wird — genau wie in der Mathematik (* vor +). Verwende Klammern, um die Absicht klar auszudrücken und die Standardreihenfolge zu überschreiben.
<?php
echo 2 + 3 * 4; // 14 — * binds tighter than +
echo (2 + 3) * 4; // 20 — parentheses force addition firstVon höchster zu niedrigster Priorität einige wichtige Ebenen: **, dann !, dann * / %, dann + -, dann Vergleiche (< > == ===), dann &&, dann ||, und schließlich =. Im Zweifelsfall Klammern setzen — sie kosten nichts und vermeiden Fehler.
Zusammenfassung
- Arithmetik (
+ - * / % **) arbeitet auf Zahlen;/gibt einen Float zurück,%gibt den Rest zurück. - Zuweisung (
= += .=…) speichert und aktualisiert Werte; kombinierte Formen sind Kurzschreibweisen. - Vergleich (
== === != <=>) gibt booleans zurück — bevorzuge striktes===, um Überraschungen durch Typumwandlung zu vermeiden. - Logik (
&& || !) verknüpft Bedingungen und wertet kurzschließend aus. - Inkrement/Dekrement (
++ --) unterscheiden sich durch die Prä-/Post-Position. - String (
. .=) verbindet Text; Array (+ == ===) vergleicht und zusammenführt Arrays. ??liefert Standardwerte für fehlende Werte; Rangfolge und Klammern steuern die Auswertungsreihenfolge.
Als Nächstes werden diese Operatoren in bedingten Anweisungen und Schleifen eingesetzt.