Avatar ·

Operador Elvis (?:) y operador de fusión null (??) en PHP: ¿cuál es la diferencia?

Hola a todos. Soy un desarrollador PHP principiante y no logro entender la diferencia entre dos operadores: el operador ternario corto (también llamado "Elvis") `?:` y el operador de fusión null `??`. En la documentación dice que son similares, pero siempre me confundo sobre cuál usar. Tengo este código. Obtengo datos de un formulario o de una base de datos, y quiero mostrar el nombre de usuario si existe, o "Invitado" si no: ```php $username = $_POST['username'] ?: 'Invitado'; ``` Esto funciona, pero a veces veo que otros desarrolladores escriben así: ```php $username = $_POST['username'] ?? 'Invitado'; ``` Ambas opciones parecen hacer lo mismo. Pero noté que si en `$_POST['username']` llega una cadena vacía `""`, la primera opción (con `?:`) muestra "Invitado", mientras que la segunda (con `??`) muestra una cadena vacía. ¿Por qué ocurre esto? ¿Y qué opción es más correcta usar cuando quiero verificar que una variable existe y no es `null`? Otro ejemplo. Tengo un array con