考虑以下示例:
$a='This is a test';
如果我现在这样做:
if(strpos($a,'is a') !== false) {
echo 'True';
}
它得到:
True
但是,如果我使用
if(strpos($a,'is a') === true) {
echo 'True';
}
我什么都得不到。为什么!==false不在===true这种情况下我检查了 PHP 文档strpos()但没有找到任何解释。
返回针相对于 haystack 字符串开头的位置(与偏移量无关)。另请注意,字符串位置从 0 开始,而不是 1。
如果未找到针头,则返回 FALSE。
如果没有找到针,它只返回一个布尔值。否则它将返回一个整数,包括 -1 和 0,以及针出现的位置。
如果你做了:
if(strpos($a,'is a') == true) {
echo 'True';
}
您通常会得到预期的结果,因为任何正整数都被认为是真实值,并且因为当您使用==运算符时类型杂耍,结果将是真实的。但是,如果字符串位于字符串的开头,它将等同于 false,因为返回零,这是一个错误的值。
strpos 函数在成功时返回一个整数值,仅当在字符串中找不到针时返回 false。在我们的例子中,字符串“This is a test”包含“is a”。所以测试(位置)!==false [其中位置是'is a'的第一次出现] 在类型和值上都与 false 不同,并且将返回 true。