strpos意外失败

时间:2014-01-02 21:51:38

标签: php strpos

问题,以下如何执行回声:

$str = "Hello World";

if (strpos($str, 'He') !== false) {
    echo 'GOOD';
}

但这不是:

$str = "Hello World";

if (strpos($str, 'He') === true) {
    echo 'GOOD';
}

这两个条件是否相同,因为它们都检查返回的是一个设置为true的布尔值?不是!== false和===相同,如果没有,为什么不呢?

我很欣赏澄清。

2 个答案:

答案 0 :(得分:8)

不,他们不等同:

strpos()返回布尔值FALSE(如果未找到)或整数偏移值(如果在偏移0处找到,则可以是0,依此类推),但它永远不会返回布尔TRUE。 ie。,Boolean TRUE!== an INT

答案 1 :(得分:0)

运算符===不仅会比较值,还会比较数据类型。如果strpos找到子字符串,则返回类型为int的位置。因为它不是bool,所以不满足条件。