我正在使用strpos在另一个字符串中查找字符串的位置。我首先检查那里是否找到了字符串。这是我的专栏:
if (strpos($grafik['data'],$ss1)<>false && strpos($grafik['data'],$ss2)<>false && strpos($grafik['data'],$ss1) < strpos($grafik['data'],$ss2))
我检查两个字符串是否都包含在内,然后我希望第一个字符串放在第二个字符串之前。在php手册中,它表示当找不到字符串时strpos返回false。但是,如果我的字符串从零位开始(strpos从开始就返回0),它似乎就是这个语句
strpos($grafik['data'],$ss1)<>false
是假的。莫名其妙0 ==假?当strpos返回0时,如何使语句成立?
答案 0 :(得分:17)
来自http://www.php.net/manual/en/function.strpos.php:
警告
此函数可能返回布尔值 FALSE,但也可能返回 非布尔值,其值为 FALSE,例如0或“”。请阅读 关于Booleans的部分了解更多信息 信息。使用the === operator 测试这个的返回值 功能
您必须使用===
运算符代替==
。
在您的情况下,请使用<>
:
!==
strpos($grafik['data'], $ss1) !== false
如果在$ss1
$grafik['data']
,则返回TRUE
答案 1 :(得分:5)
你需要检查===。这将确保您具有完全错误而不是0。
答案 2 :(得分:3)
此函数表现不可预测,因此确保它具有确定性行为使用
if(strpos($text,$string)===false)
或使用变量
测试它 $pos=strpos($text,$string);
if($pos===false)