PHP==vs===

PHP==vs===,php,Php,说到这个功能,一切似乎都正常 function found($in,$find){ if(strpos($in,$find) !== false) return true; else return false; } if(found("Sample text","text")) echo 'Found 1'; if(found("Sample text","house")) echo 'Found 2'; 结果: 发现1 但是,

说到这个功能,一切似乎都正常

function found($in,$find){
    if(strpos($in,$find) !== false)
        return true;
    else
        return false;
}

if(found("Sample text","text"))
    echo 'Found 1';
if(found("Sample text","house"))
    echo 'Found 2';
结果:

发现1

但是,如果我使用===我就不会得到正确的结果:

function found($in,$find){
    if(strpos($in,$find) === true)
        return true;
    else
        return false;
}

if(found("Sample text","text"))
    echo 'Found 1';
else
    echo 'Not found';
if(found("Sample text","house"))
    echo 'Found 2';
else
    echo 'Not found';
结果:

找不到

两者都返回false

为什么会这样?

函数永远不会返回true


它返回整数作为指针第一次出现的索引,如果指针没有出现,则返回布尔值false。

==
也检查类型,
strpos
返回整数(如果找不到指针则返回false)您正在将其与布尔值true进行比较。

strpos
返回一个整数,而不是布尔值。
strpos()
如果未找到,则返回
false
,如果找到,则返回位置,因此它将永远不会
==true
,但如果位置不是0,则返回
==true
。因为strops()函数返回布尔值或false,或整数>=0。。。。在任何情况下都不会返回布尔true。strpos返回INT和boolean。(只是不是布尔真的)@nl-x:谢谢你的评论:)