Есть ли разница между {strlen ($ var) == 0} и {empty ($ var)} - PullRequest
1 голос
/ 23 августа 2009

, учитывая, что переменную можно извлечь только из строки из формы HTML (input-text, textarea).

Ответы [ 3 ]

3 голосов
/ 23 августа 2009

Да, есть разница между strlen($str)==0 и empty($str). empty возвращает true , если значение равно "0". См. таблицы сравнения типов PHP .

1 голос
/ 24 августа 2009

Вот заметка, которую я обнаружил:
empty () , требуется переменная и только переменная , поэтому я думаю, что она имеет проблему, когда имеет дело со значением объекта, полученным из магии __ get () метод.

1 голос
/ 23 августа 2009
$var = 0;

strlen( $var ); // 1, coerced to true

empty($var) // true, it's considered "empty", these are the empty ones:
  • "" (пустая строка)
  • 0 (0 в виде целого числа)
  • "0" (0 в виде строки)
  • NULL
  • FALSE
  • array () (пустой массив)
  • var $ var; (объявленная переменная, но без значения в классе)
...