在How do I check if a string contains a specific word in PHP?阅读http://php.net/manual/en/function.strpos.php和strpos()
的文档后,我尝试了第一个链接的替代方法,而不是!==
,我使用了>= 0
$a = "Hello";
$b = "a";
if(strpos($a, $b) >= 0) {
echo 'string found';
} else {
echo 'string not found';
}
打印'string found'
而非'string not found'
? $b
显然不在$a
中,因此strpos()
应该返回false
,因此它应该输入else
,这里发生了什么?
答案 0 :(得分:2)
在这种情况下,strpos确实返回false。但是,除了0以外的任何值在php中都被视为true,包括负数,即和 0被视为false。所以,
if(strpos($a, $b) >= 0)
被评估为
if(false >= 0)
然后
if(0 >= 0)
这是真的
您应该使用!== false
代替if(strpos($a, $b) !== false)
答案 1 :(得分:1)
请阅读手册:php.net/manual/en/function.strpos.php
您会注意到strpos将返回false,$ b不在$ a中。你需要这样检查:
<?php
$a = "Hello";
$b = "a";
if(strpos($a, $b) !== false) {
echo 'string found';
} else {
echo 'string not found';
}
答案 2 :(得分:0)
if(strpos($a, $b) >= 0)
strpos($a, $b) returns false
if(false >= 0) is true.
这里我们需要检查类型。