问题,以下如何执行回声:
$str = "Hello World";
if (strpos($str, 'He') !== false) {
echo 'GOOD';
}
但这不是:
$str = "Hello World";
if (strpos($str, 'He') === true) {
echo 'GOOD';
}
这两个条件是否相同,因为它们都检查返回的是一个设置为true的布尔值?不是!== false和===相同,如果没有,为什么不呢?
我很欣赏澄清。
答案 0 :(得分:8)
不,他们不等同:
strpos()返回布尔值FALSE
(如果未找到)或整数偏移值(如果在偏移0处找到,则可以是0
,依此类推),但它永远不会返回布尔TRUE
。 ie。,Boolean TRUE
!== an INT
。
答案 1 :(得分:0)
运算符===
不仅会比较值,还会比较数据类型。如果strpos
找到子字符串,则返回类型为int
的位置。因为它不是bool,所以不满足条件。