考虑以下示例:
$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文档,但未对此找到任何解释。
答案 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。