2015-10-13 22 views
-2

對不起,這個簡單的問題,但我看着這個代碼,並不能得到一個解決方案。PHP if語句以相反的方式工作

我從MSSQL數據庫

$row = sqlsrv_fetch_array($rs, SQLSRV_FETCH_ASSOC) ; 

得到了一些數據。然後我做一個簡單的開關

switch($row['data']){ 
    case 'AA': 
     /* do something */ 
     break; 
    case 'AB': 
     /* do something */ 
     break; 
} 

但它無法正常工作。 所以我只是做了一個簡單的測試來檢查內容,這就是我得到的。

echo $row['data']; 
echo '<br>'; 
if($row['data'] == 'AB'){ 
    echo 'ok'; 
} 
echo '<br>'; 
echo 'end'; 

我也得到

AB 

end 

然後我做了

echo $row['data']; 
echo '<br>'; 
if($row['data'] != 'AB'){ 
    echo 'ok'; 
} 
echo '<br>'; 
echo 'end'; 

越來越

AB 
ok 
end 

很顯然,我失去了一些東西很簡單,但我花了很多時候看着這個驚訝。 謝謝

+0

,而不是使用echo $行[ '數據'];使用var_dump($ row ['data']); 這將打印數據類型,以便您可以輕鬆進行比較 –

+0

您的代碼中有**沒有錯誤** –

+0

運行'echo「 - 」。 $ row ['data']。 「 - 」;'你可以看到變量是否包含空格。從技術上講,你的varriable可以包含打印時不易分離的字符,但這將是一個長期的。 – Jeffrey

回答

1

確實$ row ['data']中的數據不是'AB'。大概 'AB' 或 'AB'

嘗試:

if(trim($row['data']) == 'AB'){ 
    echo 'ok'; 
} 
+0

感謝大家。這很簡單,我正在繞過它......也許是漫長的工作日...... –

2

你可能有一些額外的非打印字符。
使用trim剝奪任何開頭和結尾的空白,改變你的測試是這樣的:

if(trim($row['data']) == 'AB'){ 
    echo 'ok'; 
} 


更新:

看到什麼$row['data']包含您可以調試這樣的:

$ascii = ''; 
for ($i = 0; $i < strlen($string); $i++) { 
    $ascii .= ord($string[$i]).' '; 
} 

print $ascii; 

這會給你ascii每個字符的代碼$row['data']