2012-11-18 47 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 
}