Avatar ·

Elvis-Operator (?:) und Null-Koaleszenz-Operator (??) in PHP: Was ist der Unterschied?

Hallo zusammen. Ich bin ein PHP-Anfänger und verstehe den Unterschied zwischen zwei Operatoren nicht: dem kurzen ternären Operator (auch "Elvis" genannt) `?:` und dem Null-Koaleszenz-Operator `??`. In der Dokumentation steht, dass sie ähnlich sind, aber ich verwechsle ständig, welchen ich verwenden soll.\n\nIch habe diesen Code. Ich erhalte Daten aus einem Formular oder einer Datenbank und möchte den Benutzernamen ausgeben, falls vorhanden, oder "Gast", falls nicht:\n\n```php\n$username = $_POST['username'] ?: 'Gast';\n```\n\nDas funktioniert, aber manchmal sehe ich, dass andere Entwickler so schreiben:\n\n```php\n$username = $_POST['username'] ?? 'Gast';\n```\n\nBeide Varianten scheinen dasselbe zu tun. Aber mir ist aufgefallen, dass wenn in `$_POST['username']` ein leerer String `""` ankommt, die erste Variante (mit `?:`) "Gast" ausgibt, die zweite (mit `??`) hingegen den leeren String ausgibt.