0

我经常看到使用strlen。这 2 个测试对于 的所有值是否等效$str

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

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

4

4 回答 4

3

是的,这两个陈述在逻辑上是等价的。我喜欢给这只猫剥皮的方法:

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

...虽然empty('0')true叹息,PHP ...),所以这可能更好:

$str !== ''

另请参阅:检查字符串是否为空以及PHP 中 $str == '' 和 strlen($str) == 0 之间是否有区别?

于 2011-12-02T22:58:27.027 回答
1

它们非常接近,除了strlen()会返回字符串,所以如果你0是,你的第一个测试中的表达式将评估为,而你的第二个测试中的表达式将评估为。NULL$strNULL0 !== strlen($str)true'' !== $strfalse

于 2011-12-02T23:00:02.320 回答
1

是的,他们是一样的。。

我会使用:

is_string($str) && strlen($str) > 0
于 2011-12-02T23:01:37.437 回答
-1

试试这个

strlen($str) > 0

!== 是一种强类型,可能与 0 不匹配。

于 2011-12-02T22:59:13.173 回答