2012-05-22 165 views
0

這種比較之間有差異嗎? 之間有什麼區別!和=== FALSE?類存在檢查比較

if (!class_exists($class)) { 
    require($class.'.php'); 
} 

if (class_exists($class) === FALSE) { 
    require($class.'.php'); 
} 
+2

在這種情況下,毫無作爲'class_exists()'只會返回一個布爾值。請參閱['strpos()'](http://php.net/manual/en/function.strpos.php)上的說明,瞭解何時可能需要使用'=== false' – Phil

+0

所以我可以使用任何這樣的class_exists()呢? – Tux

+1

是的,任一測試都會得到相同的結果 – Phil

回答

1

在這種情況下,沒有。

有些人認爲這是很好的編程風格,明確表明他們正在比較布爾值。個人...我不喜歡它,但我想更詳細的形式更明顯,因爲!在括號和其他垂直字符之間砸碎時,操作員不是可見的東西。

+0

其實我覺得使用起來更好!那麼===假,只是不知道差異。感謝你們。 – Tux

-1

是兩者是不同的東西:

PHP自動認爲0爲「假」和1爲「真」,所以當你永遠在這兩者有差別直接使用功能響應if條件內。

考慮一個函數,如果執行正確,則返回int數。它也可能是0。 但是,如果函數不符合要求,則返回false。

所以此時函數返回值0就是成功。事件雖然結果爲零。在此,如果你檢查這如果條件一樣

$return = someFunction(); 

if($return){ 
    //code if ture 
} 

所以如果$收益爲0您如果代碼不會被連你的函數執行是正確的所以在這種情況下,你應該檢查像

$return = someFunction(); 

if($return !== FALSE){ 
    //code if ture 
} 
執行

===和!==用於檢查響應是否完全匹配返回類型。

if('0' === 0) 

將返回false 但

if('0' == 0) 

將返回true ...

希望現在你的想法是清楚的。

檢查了這一點:

if('0' == 0){ 
    echo 'Hi, I will be in screen :)'; 
} 

if('0' === 0){ 
    echo 'I will not be in screen :('; 
} 
+0

我只是試圖清除之間的想法!和===錯誤 –