我经常看到使用strlen。这两个测试是否等同于$str
的所有值?
is_string($str) && 0 !== strlen($str)
is_string($str) && '' !== $str
答案 0 :(得分:3)
是的,这两个陈述在逻辑上是等价的。我喜欢给这只猫上皮的方法:
is_string($str) && !empty($str)
...虽然empty('0')
是true
(叹息,PHP ...),所以这可能更好:
$str !== ''
另请参阅:Checking if the string is empty和Is there a difference between $str == '' and strlen($str) == 0 in PHP?
答案 1 :(得分:1)
他们非常接近,只有strlen()
会为0
字符串返回NULL
,所以如果$str
为NULL
,{{1}第一次测试中的表达式将评估为0 !== strlen($str)
,而第二次测试中的true
将评估为'' !== $str
。
答案 2 :(得分:1)
我会用:
is_string($str) && strlen($str) > 0
答案 3 :(得分:-1)
试试这个
strlen($str) > 0
!==是一种强类型,可能与0不匹配。