回答
原來,===是有問題的
例如10 === 10將是錯誤的,如果一個是整數,一個是字符串,即使他們與表單發佈可能發生的情況相同。
我使用的解決方案是:
如果( 「$ I」 == 「$ J」)
這樣,如果他們是相同的,無論類型,它只是檢查
這顯示了PHP的相等運算符中的一個誤解。 ==檢查兩個操作數是否相等; 10 ==「10」將返回true。 ===檢查兩個操作數是否相等,並且是相同類型,因此10 ==「10」將返回false,但是10 === 10將返回true。沒有必要在你的'解決方案'中用雙引號包裝。 – 2012-01-16 09:38:20
我也這麼認爲。但遇到了一個錯誤。 x == y給出了錯誤。添加引號後,它工作。 – 2012-01-16 15:35:49
我不認爲這是一個錯誤,這是由於PHP隱式地轉換變量。如果你在命令行運行,你可以看到:'php -r'var_dump((int)'00:15');「'字符串00:15被轉換爲int(0),然後比較0 0. – 2012-01-16 16:19:40
00:15
先鑄成一個整數再與$i
比較。由於intval()
(其執行的是鑄造)在第一個非數字字符處停止,因此00:15
被轉換爲零,該值等於零。這裏沒有問題,這是==
運營商的工作原理。
如果您想避免投射,請改爲使用===
。
使用==
這些類型將在它們進行比較之前進行轉換。在這種情況下,兩者都將轉換爲整數,並且當您將非數字字符串轉換爲整數時,可能會導致0
。
如果您使用===
運算符代替,則會得到您期望的結果。
字符串和INT比喻爲INT的,所以$j
轉換爲0,因爲在這裏有00
不奇怪的所有啓動 - 與整數比較字符串時,第一個被強制轉換爲整數,然後進行比較。使用===
進行類型檢查,你會看到真正的結果
- 1. 有條件的運算符錯誤
- 2. 帶||的語法錯誤運算符(PHP)
- 3. C++中的條件運算符錯誤?
- 4. 錯誤使用條件運算符
- 5. RxJava流:有條件的運算符和錯誤處理
- 6. JS中的條件運算符 - 語法錯誤出錯
- 7. 與三元運算符的PHP錯誤?
- 8. 條件運算符
- 9. 條件運算符
- 10. 有和沒有條件運算符()
- 11. bash中有條件的運算符
- 12. 有條件運算符的侷限性?:
- 13. 運算符==錯誤
- 14. INT的條件運算符
- 15. 帶條件運算符的C#內插字符串
- 16. 帶條件運算符的空指針異常(三元運算符),但不與其他運算符
- 17. 由python分割帶條件運算符的文本文件
- 18. C#條件運算符:?有可空INT
- 19. TypeScript是否有空條件運算符
- 20. 有效使用條件運算符?
- 21. 如何與多個條件寫條件運算符在PHP
- 22. c#空條件運算符
- 23. 空,條件運算符和!=
- 24. 使用條件運算符
- 25. 條件運算符警告
- 26. 條件運算符&& in java
- 27. 條件運算符語法
- 28. Powershell和條件運算符
- 29. 無條件運算符
- 30. C#空值條件運算符錯誤,並等待
用戶'如果($ i === $ j)'而不是'if($ i == $ j)' – Gaurav 2012-01-09 11:29:57