我经常看到使用strlen。这 2 个测试对于 的所有值是否等效$str
?
is_string($str) && 0 !== strlen($str)
is_string($str) && '' !== $str
是的,这两个陈述在逻辑上是等价的。我喜欢给这只猫剥皮的方法:
is_string($str) && !empty($str)
...虽然empty('0')
是true
(叹息,PHP ...),所以这可能更好:
$str !== ''
另请参阅:检查字符串是否为空以及PHP 中 $str == '' 和 strlen($str) == 0 之间是否有区别?
它们非常接近,除了strlen()
会返回字符串,所以如果你0
是,你的第一个测试中的表达式将评估为,而你的第二个测试中的表达式将评估为。NULL
$str
NULL
0 !== strlen($str)
true
'' !== $str
false
是的,他们是一样的。。
我会使用:
is_string($str) && strlen($str) > 0
试试这个
strlen($str) > 0
!== 是一种强类型,可能与 0 不匹配。