2011-02-14 101 views
2

我有代碼PHP「===」操作符

$url = $_GET['q']; $string = "search_text"; $pos = strpos($url,$string);

然後我用下面以檢查SEARCH_TEXT的url中的存在。如果它存在,我希望它隱藏html字段 if($pos!==true){ //generate html elements }

但它不起作用。基本上我想要做的就是隱藏某些html元素,當url中存在search_text時,使用'==='運算符比較在strpos操作期間生成的$ pos

+0

`strpos`永遠不會返回`true`,你的意思是`=== FALSE`? – 2011-02-14 22:50:13

+2

如果你實際上並不需要這個位置,使用[`strstr()`](http://php.net/strstr)更容易。 – mario 2011-02-14 22:53:23

回答

5

=== operator意味着完全相等。這意味着它必須是相同的類型以及具有相同的值。

strpos($url,$string); // return an integer 
true; // is a boolean 

的整數> 0 ==真實的,但不是真正的===

Alernativly你可以使用:

$pos = strpos($url,$string); 

if($pos !== false) // $string not in url 
if($pos == true) // $string is in url 
+0

`===`是*身份*運算符。反正+1。 – 2011-02-14 22:53:01

6

$pos!==true正是你想測試一下對面:strpos()永遠不會返回true,但是不是一個數字就是false

使用

if ($pos === false) 
1

使用===!==檢查你正在檢查的變量將需要一個true/false表示(即。 true或false)。

0

添加一個混亂的情況下:之間=和==

$bool1 = false; 
if($bool1 != '') { 
    echo "I thought comes here"; 
} else { 
    echo "Actually comes here"; 
} 

原因$ BOOL1的布爾類型比STRING不同,因此它們沒有可比性,

這就是爲什麼回聲「其實來這裏! 「;而如果($ bool1!=='')返回true