Php strpos意外失败
问题,以下内容是如何执行echo的:Php strpos意外失败,php,strpos,Php,Strpos,问题,以下内容是如何执行echo的: $str = "Hello World"; if (strpos($str, 'He') !== false) { echo 'GOOD'; } 但这并不是: $str = "Hello World"; if (strpos($str, 'He') === true) { echo 'GOOD'; } 这两个条件是否等价,因为它们都在检查返回的布尔值是否设置为true?不是吗!==false与===true相同,如果不是,为什么不 我
$str = "Hello World";
if (strpos($str, 'He') !== false) {
echo 'GOOD';
}
但这并不是:
$str = "Hello World";
if (strpos($str, 'He') === true) {
echo 'GOOD';
}
这两个条件是否等价,因为它们都在检查返回的布尔值是否设置为true?不是吗!==false与===true相同,如果不是,为什么不
我感谢您的澄清。不,它们不是等效的:
返回布尔值
FALSE
(如果未找到)或整数偏移值(如果在偏移量0处找到,可以是0
,依此类推),但它从不返回布尔值TRUE
。例如,布尔值TRUE
!=一个INT
操作符=
不仅比较值,还比较数据类型。如果strpos
找到子字符串,它将返回类型为int
的位置。因为它不是bool,所以不满足条件。strpos的目的不是返回布尔值,而是在成功时返回索引。感谢您的澄清!您可以测试isnumeric(strpos(…)
或isint(strpos(…)
,但这比简单地测试!=false
我想,这不是最佳答案,这就是我编辑回复的原因。非常感谢。