2011-06-29 194 views
4

我有兩個數組$oldInfo$newInfo其中$oldInfo是來自數據庫的現有數據,而$newInfo是用戶輸入的信息。如果兩個特定的字段不同,我想在數據庫中輸入一個新行,如果這個字段與我剛剛更新的字段相同。比較字符串的意外結果

if($oldInfo['col'] != $newInfo['col']){ 
    INSERT INTO ... 
} 
else 
{ 
    UPDATE WHERE ... 
} 

問題是if語句總是評估爲true。我在if語句中輸入了一個echo ... die()命令來打印出這兩個值,它們看起來都一樣。 Old Info: 38mg/1, 20 New Info: 38mg/1, 20

有什麼具體關於字符串比較在PHP中我缺少什麼?這些值似乎是完全一樣的(實際上,$ oldInfo用於預先填充表單,因此它們應該是相同的),但if語句說它們不一樣。

+3

在輸出值前加上引號。是否有額外的空間?在比較之前嘗試修剪字符串。 –

+2

array_diff()可能更好 – krifur

+0

我們需要更多的信息,但我的猜測是填充或字符編碼。此外,嘗試使用['strcmp'](http://php.net/manual/en/function.strcmp.php)'($ oldInfo ['col'],$ newInfo ['col')== 0' 。 –

回答

3

嘗試在比較之前修剪字符串。通常發生這種情況是因爲多餘的空白陷入其中一個空白。

-1

有些時髦可能會發生在PHP認爲它是數字38或編碼。嘗試使用!==而不是!=強制嚴格平等。

+2

可能不是這種情況(不同類型),但是很好的建議。如果是這樣,寬鬆的比較實際上會更好。 –

相關問題