Avatar ·

Opérateur Elvis (?:) et opérateur de coalescence null (??) en PHP : quelle est la différence ?

Bonjour à tous. Je suis un développeur PHP débutant et je n'arrive pas à comprendre la différence entre deux opérateurs : l'opérateur ternaire court (aussi appelé « Elvis ») `?:` et l'opérateur de coalescence null `??`. Dans la documentation, il est dit qu'ils sont similaires, mais je les confonds constamment, ne sachant lequel utiliser. J'ai ce code. Je récupère des données d'un formulaire ou d'une base de données, et je veux afficher le nom d'utilisateur s'il existe, ou « Invité » sinon : ```php $username = $_POST['username'] ?: 'Invité'; ``` Cela fonctionne, mais parfois je vois d'autres développeurs écrire ceci : ```php $username = $_POST['username'] ?? 'Invité'; ``` Les deux semblent faire la même chose. Mais j'ai remarqué que si `$_POST['username']` reçoit une chaîne vide `""`, la première version (avec `?:`) affiche « Invité », tandis que la seconde (avec `??`) affiche une chaîne vide. Pourquoi cela ? Et quelle version est-il plus correct d'utiliser quand je veux vérifier qu'une variable existe et n'est pas `null` ? Un autre exemple. J'ai un tableau avec des