2012-11-18 101 views
1

我正在逐行閱讀文本文件,每行都有逗號分隔值。示例如果條件總是返回true

Name,Phone,URL,notavailable 

閱讀正常,腳本正確返回行。最後一個值有「可用」或「不可用」。

我爆炸這樣一行

$sections = explode(",", $line); 

,並返回

Array 
    (
     [0] => Name 
     [1] => Phone 
     [2] => URL 
     [3] => notavailable 

    ) 

我可以用

$sections[0], $sections[1] etc. 

得到的價值觀和他們顯示就好了。但是當我嘗試比較最後一個值時會出現問題。

$check = $sections[3]; 
if($check=="notavailable") 
{Do something } 
else {Do something else} 

但是,if語句總是返回false。我無法弄清楚。試了很多次。有人可以在我的腳本中指出錯誤,這將非常有幫助。

在此先感謝。

回答

3

您需要做一些調試。再加上這行

$check = $sections[3]; 
echo "check = '$check'"; // Debug print 

如果在這樣的行情打印出來,你可能會看到有前/後間隔。如果是這種情況,只需致電trim()即可處理。

+0

非常感謝您!使用trim()解決了它。 – Geevz

0

$ a == $ b如果$ a等於$ b之後等於TRUE則類型爲雜耍。 $ a === $ b如果$ a等於$ b,則它們是相同的,並且它們是相同的類型。

當你讀取文件時,你也讀取空格,所以你需要修剪它們。

所以,你應該使用:

if(trim($section[3]) === "notavailable"){ 
    //Do something 
} else { 
    //Do something else 
} 
+0

我不認爲'==='在這裏適合。 –

+0

即使沒有'===',你也需要使用'trim'函數去除空格,因爲你的'$ section [3]'可以包含你不需要的空白。 – Epsil0neR

+0

沒錯。這就是爲什麼我在我的答案中表明瞭這一點。我不確定與'==='有什麼關係。 –

0

嘗試使用

if(preg_match_all('/notavailable/i',$section[3])) 
{ 
    // Not Available 
} 
else 
{ 
    // Available 
}