Я смотрел на какой-то код проверки формы, написанный кем-то другим, и я увидел это:
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" . Так что есть разница.
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