2010-11-16 121 views
3

我使用strpos在另一个字符串中查找字符串的位置。我首先检查是否在那里找到了字符串。这是我的线:strpos问题0 = false?

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 == false?当strpos返回0时,我该如何使该语句成为真?

+1

请参阅[php 5 strpos()区别返回0和false?](http://stackoverflow.com/questions/2396713/php-5-strpos-difference-between-returning-0-and-false) 。 – 2010-11-16 07:40:08

回答

17

http://www.php.net/manual/en/function.strpos.php来自:

警告

这个函数可以返回布尔 FALSE,但也可以返回其评估一个 非布尔值到 FALSE,如0或 “”。请阅读 关于Booleans的部分了解更多 的信息。使用the === operator作为 测试此 函数的返回值。

您必须使用===运算符而不是==

,而不是使用<>在你的情况下,使用!==

strpos($grafik['data'], $ss1) !== false 

如果$ss1$grafik['data']

+1

hehe ..被殴打几秒;-) .. +1 – pinaki 2010-11-16 07:40:23

+0

只有约120秒(+ - 60秒):p – Lekensteyn 2010-11-16 07:41:42

5

您需要咨询===发现这将返回TRUE。这将确保你有确切的虚假和不为0

3

此功能的行为不可预测,所以可以肯定这将有确定性的行为兼用

if(strpos($text,$string)===false) 

或使用可变

测试$pos=strpos($text,$string); if($pos===false)

+1

$ pos在这里仍然可能有真值或虚假值,所以你应该遵循你自己的建议和使用===错误而不是!这里也。 :) – 2016-03-09 15:20:38

+0

感谢您的纠正,编辑 – user965748 2016-03-10 16:21:34