2015-12-28 56 views
0

请参见下面的问题:strpos()疯狂 - 为什么它不起作用?

$str = "video-23984"; // returns false 
$str = " video-23984"; // returns true 
$search= "video"; 

if(strpos($str,$search)) { 
    echo "True"; 
}else { 
    echo "False"; 
} 

世界为什么$str = "video-23984"返回false?我能做些什么来使它恢复真实?

+1

'is_int(strpos(...))'如果你正在寻找布尔测试,否则它返回bools **或**整数(其中'0'是可能的结果)。 – mario

+1

什么是地狱马里奥,这不是重复。另一个问题是不同的,即使它与相同的功能有关,它是回报。 – Phiter

+0

来自[PHP文档](http://php.net/manual/en/function.strpos.php)的大警告 - 警告 此函数可能会返回布尔FALSE,但也可能会返回一个非布尔值,它会评估变为假。有关更多信息,请阅读布尔部分。使用===运算符来测试这个函数的返回值。' –

回答

0

在第一个字符串中,字video位于第一个位置,表示0

在第二个它在第二个位置,这意味着1。 由于您将它返回给if,因此0是false的布尔值。这就是为什么你得到false

+2

要得到一个完整的答案,你应该讨论'=='和'==='(和'!='和'!==' ) –