Разница между empty() и isset() (Сравнение)

PHP
Если Вы читаете этот пост, значит Вы, как и я когда то задавался вопросом: чем отличаются empty() и isset()? Ведь по идеи они выполняют одну и туже функцию, что isset() - проверяет, установлена ли переменная, что empty() - проверяет, установлена ли переменная. Но как оказалась, разница между ними все же есть!
Давайте рассмотрим два примера. Первый пример, с использованием isset():
$danfa = 0;
if (isset($danfa)) 
{
    echo 'Переменная $danfa определена.';
}

Второй пример, с использованием empty():
$danfa = 0;
if (empty($danfa)) 
{
    echo 'Переменная $danfa либо имеет значение 0, либо пусто, или вообще не определена.';
}

То есть isset() - принимает значение true, потому что переменная $danfa определена, а empty() - принимает значение true, потому что переменная $danfa пуста или неопределенна.