Simple, but sometimes we use it in wrong way!

$a = '';

echo $a ?: 'a string';

$b = '';

echo $b ?? 'b string';

So:

isset ~ ??

!empty ~ ?:

More example:

$a = ['1' => ['2' => []]];

print($a['1']['2'] ?: 'a string'); // print out s string ~ !empty

echo PHP_EOL;

$b = ['1' => ['2' => []]];

print($b['1']['2'] ?? 'b string'); // print out Array ~ isset