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