1

我正在逐行读取文本文件,每行都有逗号分隔值。例子

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。我想不通。试了这么多次。有人可以指出我脚本中的错误,这将非常有帮助。

提前致谢。

4

3 回答 3

3

您需要进行一些调试。像这样扔一条线

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

如果你用这样的引号打印出来,你可能会看到有前导/尾随空格。如果是这种情况,一个简单的调用就trim()可以解决它。

于 2012-11-18T10:27:00.523 回答
1

$a == $b 等于 TRUE 如果在类型杂耍之后 $a 等于 $b。$a === $b 如果 $a 等于 $b 并且它们属于同一类型,则相同 TRUE。

当你读取文件时,你也读取了空格,所以你需要修剪它们。

所以你应该使用:

if(trim($section[3]) === "notavailable"){
    //Do something
} else {
    //Do something else
}
于 2012-11-18T10:31:20.510 回答
0

尝试使用

 if(preg_match_all('/notavailable/i',$section[3]))
 {
    // Not Available
 }
 else
 {
     // Available
 }
于 2012-11-18T11:03:20.467 回答