作爲一個php neewbie,我嘗試閱讀很多其他人的代碼以學習。 今天我通過管道傳來這樣的:邏輯運算符php true或false
if (stripos($post_to_check->post_content, '[' . $shortcode) !== false)
我想知道是什麼 !==false
和==true
如果有人可以解釋給我,這將是極大的讚賞之差。 ..如果沒有真正的區別 - 將使用引用的另一個的原因是什麼?
作爲一個php neewbie,我嘗試閱讀很多其他人的代碼以學習。 今天我通過管道傳來這樣的:邏輯運算符php true或false
if (stripos($post_to_check->post_content, '[' . $shortcode) !== false)
我想知道是什麼 !==false
和==true
如果有人可以解釋給我,這將是極大的讚賞之差。 ..如果沒有真正的區別 - 將使用引用的另一個的原因是什麼?
PHP是一種鬆散類型的語言。 ==
與兩個值匹配,並且===
匹配值以及值的數據類型。
if (8 == '8') // returns true
以上情況只是匹配不是數據類型因此if
評估值TRUE
if (8 === '8') // returns false
和值的這一個檢查兩個值和數據類型,因此這if
評估爲FALSE
在需要檢查值和數據類型時,使用===
,如果只需要比較非數據類型的值,則使用==
。
在你的情況,該字符串中的子串的
的stripos
返回的位置,如果沒有找到字符串,則返回FALSE
。
if (stripos($post_to_check->post_content, '[' . $shortcode) !== false)
上述內部串支票子串的代碼,並得到評估,以TRUE
只有當子字符串中找到。 如果將其更改爲
if (stripos($post_to_check->post_content, '[' . $shortcode) != false)
,並當在0
位置if
發現的子串評估爲FALSE,即使子字符串是有主的字符串中。 然後病情會變成這個樣子
if (0 != false)
而且由於0
被視爲FALSE
所以,你必須使用有!==
if (0 !== false)
這將比較這將評估爲FALSE
的兩個值的值和數據類型 值0
是整數類型,而false
是boolean
類型,因此這裏的數據類型不匹配,條件將是TRUE
PHP手冊頁聲明這些comparison operator您應該檢查一次。
感謝Shakti的回答,雖然它並沒有完全幫助我直接懷疑我(我問過!== false和== TRUE之間的區別,而不是!== false和!= false之間的區別) 。然而,我明白這一切都與我的neewbie狀態有關,並且不知道stripos()函數不是真/假函數。它返回一個VALUE或FALSE。在那種情況下,我明白爲什麼特定的程序員使用過它。我仍然不知道有什麼區別!== false和== TRUE是.. – 2012-01-08 03:35:43
!==
是一個比較不只是比較值,也是類型的兩個變量的。
它在這裏使用,因爲stripos
可以在找不到命中時返回false
,也可以在字符串的第一個字符中找到命中0
。
==
無法區分這兩種情況(它們都是「虛假」),因此在使用stripos
時必須使用===
。有一個在manual警告:
這個函數可以返回布爾值FALSE,但也可能返回的結果爲FALSE的非布爾值,例如0或「」。有關更多信息,請閱讀布爾部分。使用===運算符來測試此函數的返回值。
爲什麼downvote? – 2012-01-07 10:36:43
!==false
和==true
之間的差異是在PHP相同/不相同且/不相等的比較之間的差。
請參閱Comparison Operators PHP手冊相同和之間的差異平等是豆。
感謝您的回答,就像之前所說的,我已經閱讀過該頁面。我不知道的是stripos()不是true/false函數,它是一個值/虛函數。如果它是一個真/假函數,我仍然有一個理解!== false和== true之間的區別的問題(除非「true」和「false」可以是一個字符串??) – 2012-01-08 03:39:29
== = =等於比較。 '==='=相同的比較。 '!=='是相同比較的否定,而不是平等比較的否定。也許這就是重點? – hakre 2012-01-08 10:57:50
就像我說的,我明白平等!=相同:-)無論如何,我無法感謝你們所有人的回答,我學到了很多東西,即使在這個問題上起伏不定 - 甚至有經驗的用戶對此有疑問......再次感謝, – 2012-01-08 11:41:32
注意:== true和=== true是不同的。
我想!== false類似於=== true,所以只解釋== true和=== true。對於第一個==,它的值相等,因此1 == true,0 == false。對於===,它在PHP中是「相同的」,即值相等,也是類型。
因此,如果結果在第零位,結果應該爲真;然而,如果使用== true,它將不會像0!= true一樣工作。
例如, stripos('a sheep','a') 如果您使用== true,結果是錯誤的,因爲它是在第一個地方。
爲什麼地獄是每個人都在這裏像這樣完全有效的答案?這是一個很好的觀點和幫助!說真的,我覺得StackOverflow的質量已經開始走上維基百科的道路,因爲它越來越高的曝光率...... – 2012-01-07 11:54:09
http://php.net/manual/en/language.operators.comparison.php – hakre 2012-01-07 10:26:36
可能重複[參考 - 這個符號在PHP中意味着什麼?](http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – hakre 2012-01-07 10:28:15
@hakre不是真的 - 它不能解釋爲什麼它在這個特定的情況下使用 – 2012-01-07 10:29:22