2012-04-07 51 views
3

正如在標題中,函數之前的感嘆號真的意味着什麼PHP?PHP中的函數真的意味着什麼真正的意思PHP


例如是以下語句:

if (!stripos($haystack, $needle)) {} 

與此相同:

if (stripos($haystack, $needle) === FALSE) {}

或該:

if (stripos($haystack, $needle) == FALSE) {}


任何澄清,將不勝感激

+0

這意味着如果它不等於或結果是錯誤的。這是一個簡短的編寫代碼的方法 – 2012-04-07 07:43:25

+0

@Radu也許我的問題還不夠清楚,但我在問是否!在函數檢查類型之前。 – n1te 2012-04-07 07:52:28

回答

14

功能之前的!是一樣的...

if (stripos($haystack, $needle) == FALSE) {} 

這是相同的,因爲它是一個==比較不檢查的類型。

它被稱爲否定一元運算符。它翻轉值的布爾值(強制爲布爾如果需要)。

例如...

! 0; // True 
! 1 ; // False 
! ''; // True 
! true; // False 
!! 0 // False 

!!訣竅是在語言得心應手沒有(bool)演員。通過翻轉一個值兩次,你就可以得到原始值的布爾版本。

+0

謝謝,這是我正在尋找的澄清 – n1te 2012-04-07 07:49:16

+0

@alex,你是怎麼知道它強制布爾如果需要?文檔對此有何意義? http://www.php.net/manual/en/language.operators.logical.php – Pacerier 2013-08-07 16:44:08

+0

@Pacerier它說*如果$ a不是真則爲真* – alex 2013-08-07 21:49:40

0

!將進行價值比較,所以它與我認爲的第二個比較相同。因爲!會捕獲false,0,null爲false,並且它們與您看到的類型不同。 「」可能是一個例外,因爲我總是使用trim()!=「」來比較字符串。我不知道這一點。

+0

..並感謝您的讚賞。我想在這裏幫忙。我的回答不對你有意義嗎? – 2012-04-07 07:49:35

+0

你的回答很好,但亞歷克斯的回答讓我更容易理解。順便說一句。這不是我投票給你的。 – n1te 2012-04-07 07:56:04

+0

不,我在評論另一條評論,對不起。他在寫完這些之後刪除了他。 – 2012-04-07 07:58:43