PHP-Tipps: Fragezeichen

Rezept-Liste

PHP-Tipps: Fragezeichen

Geschichte

#Tipps

by chatGPT

*** Kurzfassung
Operator Bedeutung Beispiel
??
Null-Coalescing: nur prüfen, ob eine Variable existiert und nicht null ist
$_GET['a'] ?? 'leer'

?:
Ternary-Short-Syntax: prüft, ob der linke Wert truthy ist
$x ?: 'leer'

Sie verhalten sich komplett unterschiedlich.

*** 1. Der Null-Coalescing-Operator ??
Er prüft nur: existiert die Variable?
ist sie nicht null?
Sonst nimmt er den rechten Wert.

$bereich = $_GET['bereich'] ?? '';
Das bedeutet:
Wenn $_GET['bereich'] existiert -> Wert nehmen
Wenn nicht -> ''

Wichtig:
?? löst keine Warnung aus, wenn die Variable nicht existiert.
Darum nutzt man ihn so gern bei $_GET und $_POST.

*** 2. Der Elvis-Operator ?: (Kurzform vom Ternary-Operator)
Er prüft:
Ist der Wert “truthy”? (also NICHT: false, 0, "", null, [], "0")

Beispiel:
$bereich = $_GET['bereich'] ?: '';
Das bedeutet:
Wenn $_GET['bereich'] existiert UND NICHT leer ist -> Wert nehmen
Sonst -> ''

ABER:
Wenn $_GET['bereich'] gar nicht existiert -> *** FEHLER: Undefined index
Wenn $_GET['bereich'] = "0" -> wird wie leer behandelt
Wenn $_GET['bereich'] = "" -> wird wie leer behandelt
Wenn $_GET['bereich'] = null -> wird wie leer behandelt

Also: viel gefährlicher bei GET/_POST

*** Mini-Vergleich:
Angenommen:
$_GET['bereich'] = "kuchen";
Ausdruck Ergebnis
$_GET['bereich'] ?? 'leer' "kuchen"
$_GET['bereich'] ?: 'leer' "kuchen"
Alles gut.

Angenommen:
$_GET['bereich'] = "";
Ausdruck Ergebnis
$_GET['bereich'] ?? 'leer' ""
$_GET['bereich'] ?: 'leer' "leer" (weil "" ist “falsy”)
Angenommen:

// es gibt keinen ?bereich=...
Ausdruck Ergebnis
$_GET['bereich'] ?? 'leer' "leer" (korrekt – ohne Fehler)
$_GET['bereich'] ?: 'leer' *** FEHLER: Undefined index

*** Merksatz
?? = prüft Existenz -> perfekt für $_GET, $_POST, Arrays
?: = prüft Wahrheitswert -> gut für “wenn leer, dann …”

*** Sehr einfacher Vergleich
Stell dir vor: $user = $_GET['user'];
?? = “wenn nicht vorhanden -> Ersatzwert nehmen”
?: = “wenn leer -> Ersatzwert nehmen”

Beispiel:
$name = $_GET['name'] ?? 'Unbekannt'; // Sicher & korrekt
$name = $_GET['name'] ?: 'Unbekannt'; // Unsicher & andere Logik

*** Fazit
Zweck Bester Operator
GET/POST-Werte sicher abfragen ??
Leere Strings abfangen ?:
Variable existiert sicher beide möglich

Tipps


by chatGPT

*** Kurzfassung
Operator Bedeutung Beispiel
??
Null-Coalescing: nur prüfen, ob eine Variable existiert und nicht null ist
$_GET['a'] ?? 'leer'

?:
Ternary-Short-Syntax: prüft, ob der linke Wert truthy ist
$x ?: 'leer'

Sie verhalten sich komplett unterschiedlich.

*** 1. Der Null-Coalescing-Operator ??
Er prüft nur: existiert die Variable?
ist sie nicht null?
Sonst nimmt er den rechten Wert.

$bereich = $_GET['bereich'] ?? '';
Das bedeutet:
Wenn $_GET['bereich'] existiert -> Wert nehmen
Wenn nicht -> ''

Wichtig:
?? löst keine Warnung aus, wenn die Variable nicht existiert.
Darum nutzt man ihn so gern bei $_GET und $_POST.

*** 2. Der Elvis-Operator ?: (Kurzform vom Ternary-Operator)
Er prüft:
Ist der Wert “truthy”? (also NICHT: false, 0, "", null, [], "0")

Beispiel:
$bereich = $_GET['bereich'] ?: '';
Das bedeutet:
Wenn $_GET['bereich'] existiert UND NICHT leer ist -> Wert nehmen
Sonst -> ''

ABER:
Wenn $_GET['bereich'] gar nicht existiert -> *** FEHLER: Undefined index
Wenn $_GET['bereich'] = "0" -> wird wie leer behandelt
Wenn $_GET['bereich'] = "" -> wird wie leer behandelt
Wenn $_GET['bereich'] = null -> wird wie leer behandelt

Also: viel gefährlicher bei GET/_POST

*** Mini-Vergleich:
Angenommen:
$_GET['bereich'] = "kuchen";
Ausdruck Ergebnis
$_GET['bereich'] ?? 'leer' "kuchen"
$_GET['bereich'] ?: 'leer' "kuchen"
Alles gut.

Angenommen:
$_GET['bereich'] = "";
Ausdruck Ergebnis
$_GET['bereich'] ?? 'leer' ""
$_GET['bereich'] ?: 'leer' "leer" (weil "" ist “falsy”)
Angenommen:

// es gibt keinen ?bereich=...
Ausdruck Ergebnis
$_GET['bereich'] ?? 'leer' "leer" (korrekt – ohne Fehler)
$_GET['bereich'] ?: 'leer' *** FEHLER: Undefined index

*** Merksatz
?? = prüft Existenz -> perfekt für $_GET, $_POST, Arrays
?: = prüft Wahrheitswert -> gut für “wenn leer, dann …”

*** Sehr einfacher Vergleich
Stell dir vor: $user = $_GET['user'];
?? = “wenn nicht vorhanden -> Ersatzwert nehmen”
?: = “wenn leer -> Ersatzwert nehmen”

Beispiel:
$name = $_GET['name'] ?? 'Unbekannt'; // Sicher & korrekt
$name = $_GET['name'] ?: 'Unbekannt'; // Unsicher & andere Logik

*** Fazit
Zweck Bester Operator
GET/POST-Werte sicher abfragen ??
Leere Strings abfangen ?:
Variable existiert sicher beide möglich

Wish You a Beautiful Day!

🍀🏞️🌻☀️🐝💐🌷🌹🌸🌺🦋🐛
🌊⋆。𖦹 °.🐚⋆❀˖°🫧
𓂃𓂁𓂃🪷🫧🧜🏻‍♀️🪸𓂃𓂁𓂃
🏝️🍹⛱️🌞🐢🐬˚˖𓍢✨໋ 🐋✧˚.🐟.39