2012-11-18 40 views

回答

1

$!如果$ a設置爲0,一個爲真,或者如果$ a未設置。三重等號嚴格檢查錯誤,而不僅僅是空值。

0

===運算符是「相同值和相同類型」的比較。因此$foo === false只有在$foo已經是bool類型等於false的情況下才爲真,而!$foo將根據$foo的類型執行不同的操作(例如,如果$foo是對象或資源,則它將檢查它是否爲空值。如果它是一個字符串,那麼它會檢查null(我認爲它也是一個空字符串,但是我不確定)如果它是一個整數,那麼它會檢查它是否爲零基本上它的作用類似於C的!運算符,加入bool類型(其中,布爾值真的int值)。

在代碼中,這兩個示例是「正確的」,儘管第一示例中,使用操作者!,是最簡潔的,並應是優選的。

1
(!is_dir($path)){...} 

IF is_dir($ PATH)是EQUAL爲false。

(is_dir($path) === false){...} 

IF is_dir($ PATH)是IDENTIFCAL爲false。這是更多的顯式意義上說,is_dir($ path)的結果務必是一個布爾FALSE值。沒有其他人會做。

運行這個例子:

<?php 

$var = 0; 

if($var == false){ 
    echo 'Var is EQUAL to FALSE.'; 
} 

if($var === false){ 
    echo 'Var is IDENTICAL to FALSE.'; 
} 

?> 

閱讀上比較運營商here

0

我覺得通過舉一些例子會更容易理解(你需要在命令提示符/終端中執行php命令) !不是邏輯運算符,它是由php文檔定義爲「!$ a有Result TRUE,如果$ a不是TRUE。「

php -r "$a=NULL; $b = !$a; var_dump($b);" 

返回布爾(真)

php -r "$a=''; $b = !$a; var_dump($b);" 

返回布爾(真)

php -r "$a=array(); $b = !$a; var_dump($b);" 

返回布爾(真)

php -r "$a=false; $b = !$a; var_dump($b);" 

返回布爾(真)

php -r "$a=0; $b = !$a; var_dump($b);" 

返回布爾(真)

php -r "$a=0.0; $b = !$a; var_dump($b);" 

個返回布爾(真)

php -r "$a='0'; $b = !$a; var_dump($b);"

返回布爾(真)

雖然$一個===虛假僅當$ a是實際工作bollean,其價值將是真實的是虛假的(所有其他先例的例子將是錯誤的!運營商)

php -r "$a=false; $b = $a === false; var_dump($b);" 

返回布爾(真)

在您的例子只是用不操作!因爲你不需要檢查is_dir結果的類型。