2012-09-03 27 views
1

爲什麼這個總是返回true比較兩個變量返回錯誤結果

$s = '334rr'; 
$i = (int)$s; 

if ($i == $s) { 
    echo true; 
} else { 
    echo false; 
} 

如果我贊同$i它給人的334的價值,這是不同於$s這是334rr

回答

4

the manual

如果你比較多個具有一個字符串或比較涉及數字串,則每一個字符串被轉換爲數字和數值進行比較。

因此:($i == $s)與您所給出的值相同($i == (int)$s)

使用===來避免類型雜耍。

2

當使用==與整數比較字符串時,字符串將嘗試將大小寫轉換爲整數。

0

不推薦將字符串與int進行比較。您應該使用===,它將驗證相同的數據類型以及相同的值。

0

與另一個整數($ i)比較時,PHP將$ s字符串轉換爲整數。 它基本上做到這一點(當然,我不知道它在內部做,但它歸結爲):

if($i == (int) $s) 

這使得語句真

2

試試這個

$s = '334rr'; 
$i = intval($s); 
if ($i == $s) { 
echo true; 
} else { 
    echo false; 
}