Есть ли разница между strlen () == 0 и empty ()?

Я смотрел на какой-то код проверки формы, написанный кем-то другим, и я увидел это:

strlen() == 0 

При тестировании, чтобы увидеть, является ли переменная формы пустой, я использую функцию empty() . Один путь лучше, чем другой? Являются ли они функционально эквивалентными?

strlen заключается в том, чтобы получить количество символов в строке, в то время как empty используется для проверки, является ли переменная пустой

Значение пустого:

 empty("") //is empty for string empty(0) // is empty for numeric types empty(null) //is empty empty(false) //is empty for boolean 

Есть пара случаев, когда у них будет другое поведение:

 empty('0'); // returns true, strlen('0'); // returns 1. empty(array()); // returns true, strlen(array()); // returns null with a Warning in PHP>=5.3 OR 5 with a Notice in PHP<5.3. empty(0); // returns true, strlen(0); // returns 1. 

Следующие вещи считаются пустыми:

 "" (an empty string) 0 (0 as an integer) 0.0 (0 as a float) "0" (0 as a string) NULL FALSE array() (an empty array) var $var; (a variable declared, but without a value in a class) 

strlen () просто проверьте, является ли строка len равным 0. Она не проверяет наличие int, float и т. д. Какова ваша ситуация.

Справка

 $f = 0; echo empty($f)? 'Empty':'Full'; // empty $f = 0; echo strlen($f); // 1 

Для форм я использую isset . Это более ясно. 😉

empty() вернет true, если $x = "0" . Так что есть разница.

http://docs.php.net/manual/en/types.comparisons.php

empty – это противоположность логическому ложному.

empty – это языковая конструкция.

strlen – это функция.

strlen возвращает длину байтов строки.

strlen($str)==0 – сравнение длины байта, равного 0 (ослабленное сравнение).

Это сравнение приведет к истинному, если строка пуста – как и выражение empty($str) в случае пустой (нулевой длины) строки.

Однако для всего остального:

empty – это противоположность логическому ложному.

strlen возвращает длину байтов строки.

Они не разделяют много друг с другом.

empty() для всех типов переменных. strlen() , я думаю, лучше использовать со строками или чем-то, что можно безопасно отливать по строкам. Для примера,

 strlen(array()); 

будет бросать PHP Warning: strlen() expects parameter 1 to be string, array given

когда входной сигнал равен 0 ,

 strlen(0) = 1 empty(0) = false <-- non-empty