Почему условие не выполеяется?
https://www.php.net/manual/en/types.comparisons.php

0 = empty

https://onlinephp.io/c/c75a6



isset проверяет наличие ключа в массиве, но он может быть null, 0 и т.п.
empty проверяет значение на "пустоту"
empty($var) - это "синтаксический сахар", т.е. это краткая запись следующей конструкции:
!isset($var) || $var == false
т.е. кроме того же самого isset, там еще и сравнение с false, причем с преобразованием типов