我敢肯定,這是我福利局PHP知識,簡單的根本缺陷,但我很驚訝,當以下事情發生了:字符串比較上一個布爾
$result
是TRUE
...所以爲什麼它被認爲與字符串「email」相等?我猜這是因爲,從技術上講,這是一個bool
,它不是假的?所以當它與一個字符串(例如「email」)進行比較時,它會返回true。
我應該改變我的方法返回結果爲string
包含「真」(而不是成功return true;
),或者有另一種方式,我應該這樣做嗎?
謝謝。
我敢肯定,這是我福利局PHP知識,簡單的根本缺陷,但我很驚訝,當以下事情發生了:字符串比較上一個布爾
$result
是TRUE
...所以爲什麼它被認爲與字符串「email」相等?我猜這是因爲,從技術上講,這是一個bool
,它不是假的?所以當它與一個字符串(例如「email」)進行比較時,它會返回true。
我應該改變我的方法返回結果爲string
包含「真」(而不是成功return true;
),或者有另一種方式,我應該這樣做嗎?
謝謝。
是的,true
等於(==
)爲非空字符串。不完全相同(===
)。
我建議你仔細閱讀type comparison table。
優秀。非常感謝。 – 2011-05-09 14:29:19
+1提醒身份 – 2011-05-09 14:30:52
不完全正確!空字符串(「」)和字符串零(「0」)被視爲FALSE。所有其他人都是真的! – 2012-11-16 04:57:31
它返回true,因爲php會嘗試轉換某些東西來比較它們。在這種情況下,它可能會嘗試將右側的字符串轉換爲布爾值,在這種情況下將爲true。真實的==真實是正確的。
通過執行$ result ===「email」(triple =),告訴PHP它不應該執行轉換,並且如果類型不匹配應該返回false。
請粘貼您的代碼而不是截圖。 – TJHeuvel 2011-05-09 14:24:55
@TJ,我發佈截圖的原因是因爲它顯示了'$ result'的內容,並且它通過了條件測試。再加上它實際上是三行代碼。 – 2011-05-09 14:26:39
啊!它不是我的代碼違背編程規律,它只是PHP! – 2014-12-11 13:09:32