为什么strpos是!== false而不是true?

时间:2018-09-27 18:30:01

标签: php boolean strpos stripos

考虑以下示例:

$a='This is a test';

如果我现在这样做:

if(strpos($a,'is a') !== false) {
    echo 'True';
}

它得到:

True

但是,如果我使用

if(strpos($a,'is a') === true) {
    echo 'True';
}

我什么也没得到。为什么在这种情况下!==false不是===true 我检查了strpos()上的PHP文档,但未对此找到任何解释。

2 个答案:

答案 0 :(得分:4)

Because strpos() never returns true

  

返回针相对于干草堆弦的起点的位置(与偏移量无关)。另外请注意,字符串位置从0开始,而不是1。

     

如果找不到针,则返回FALSE。

仅在找不到针的情况下才返回布尔值。否则,它将返回一个整数including -1 and 0以及指针出现的位置。

如果您已完成:

if(strpos($a,'is a') == true) {
    echo 'True';
}

您通常会获得预期结果,因为任何正整数都被视为真实值,并且因为在使用==运算符时键入杂耍,结果将为true。 但是如果该字符串位于字符串的开头,则由于返回零(这是一个falsey值),因此它等于false。

答案 1 :(得分:0)

strpos函数成功返回一个整数值,只有在字符串中未找到针时才返回false。在我们的例子中,字符串“ This is a test”包含“ is a”。因此,测试(位置)!== false [位置是'is a'的第一个出现]在类型和值上都与false不同,并且将返回true。