проверить строки длиной не менее 1 символа - PullRequest
0 голосов
/ 03 декабря 2011

Я часто вижу strlen используется. Являются ли эти 2 теста эквивалентными для всех значений $str?

is_string($str) && 0 !== strlen($str)

is_string($str) && '' !== $str

Ответы [ 4 ]

3 голосов
/ 03 декабря 2011

Да, эти два утверждения логически эквивалентны. Мои любимые способы снятия кожи с этой кошки:

is_string($str) && !empty($str)

... хотя empty('0') равно true ( вздох , PHP ...), так что это, вероятно, еще лучше:

$str !== ''

См. Также: Проверка, является ли строка пустой и Есть ли разница между $ str == '' и strlen ($ str) == 0 в PHP?

1 голос
/ 03 декабря 2011

да, они одинаковы ..

Я бы использовал:

is_string($str) && strlen($str) > 0
1 голос
/ 03 декабря 2011

Они довольно близки, за исключением того, что strlen() вернет 0 для NULL строк, поэтому, если ваше $str было NULL, выражение 0 !== strlen($str) в вашем первом тесте будет иметь значение true, тогда как '' !== $str в вашем втором тесте оценивается как false.

0 голосов
/ 03 декабря 2011

Попробуйте это

strlen($str) > 0

! == является сильным типом и может не соответствовать 0 должным образом.

...