, учитывая, что переменную можно извлечь только из строки из формы HTML (input-text, textarea).
Да, есть разница между strlen($str)==0 и empty($str). empty возвращает true , если значение равно "0". См. таблицы сравнения типов PHP .
strlen($str)==0
empty($str)
empty
"0"
Вот заметка, которую я обнаружил: empty () , требуется переменная и только переменная , поэтому я думаю, что она имеет проблему, когда имеет дело со значением объекта, полученным из магии __ get () метод.
$var = 0; strlen( $var ); // 1, coerced to true empty($var) // true, it's considered "empty", these are the empty ones: