2012-01-09 34 views

回答

0

原來,===是有問題的

例如10 === 10將是錯誤的,如果一個是整數,一個是字符串,即使他們與表單發佈可能發生的情況相同。

我使用的解決方案是:

如果( 「$ I」 == 「$ J」)

這樣,如果他們是相同的,無論類型,它只是檢查

+1

這顯示了PHP的相等運算符中的一個誤解。 ==檢查兩個操作數是否相等; 10 ==「10」將返回true。 ===檢查兩個操作數是否相等,並且是相同類型,因此10 ==「10」將返回false,但是10 === 10將返回true。沒有必要在你的'解決方案'中用雙引號包裝。 – 2012-01-16 09:38:20

+0

我也這麼認爲。但遇到了一個錯誤。 x == y給出了錯誤。添加引號後,它工作。 – 2012-01-16 15:35:49

+0

我不認爲這是一個錯誤,這是由於PHP隱式地轉換變量。如果你在命令行運行,你可以看到:'php -r'var_dump((int)'00:15');「'字符串00:15被轉換爲int(0),然後比較0 0. – 2012-01-16 16:19:40

6

00:15先鑄成一個整數再與$i比較。由於intval()(其執行的是鑄造)在第一個非數字字符處停止,因此00:15被轉換爲零,該值等於零。這裏沒有問題,這是==運營商的工作原理。

如果您想避免投射,請改爲使用===

2

使用==這些類型將在它們進行比較之前進行轉換。在這種情況下,兩者都將轉換爲整數,並且當您將非數字字符串轉換爲整數時,可能會導致0

如果您使用===運算符代替,則會得到您期望的結果。

1

字符串和INT比喻爲INT的,所以$j轉換爲0,因爲在這裏有00

0

不奇怪的所有啓動 - 與整數比較字符串時,第一個被強制轉換爲整數,然後進行比較。使用===進行類型檢查,你會看到真正的結果