我很好奇为什么"包含"在PHP中如此复杂的论坛?
我正在学习PHP来自一种名不见经传的Lasso语言。 PHP和Lasso非常相似。
Lasso有一件事,那就是包含字符串函数>>
if($myVar >> 'x') // this is a contains statement
是否有比以下更简单的方法:
if(strpos($a, 'are') !== false)
这几乎看起来像双重否定。为什么不==真的?这可能是我遇到的最令人困惑的事情。我希望有人可以解释一下!
编辑:我认为我的问题的答案是没有其他包含的快捷代码。感谢大家的帮助。答案 0 :(得分:2)
正如文档所说:
此函数可能返回布尔值FALSE,但也可能返回非布尔值,其值为FALSE。
和
返回针存在于相对于haystack字符串开头的位置(与offset无关)。另请注意,字符串位置从0开始,而不是1。
你不能== true
,因为如果字符串出现在第0个索引(即字符串的最开头),strpos
可以返回0
,这将使== true
失败1}}检查为0
是假y值。
TL; DR:strpos
不是“包含”功能,它是“字符串的位置”功能,可以使用作为“包含”功能结果
答案 1 :(得分:1)
应该注意strpos
将对包含__toString()
方法的对象执行字符串转换
比如这个
//Enter your code here, enjoy!
class foo{
public function __toString(){
return 'hello world';
}
}
$Foo = new foo;
echo strpos($Foo, "world");
OUPUTS
6
当然,在这种情况下,这是一个非常不可能的情况,但我认为值得一提。
如此sandbox
所示