如果条件总是返回true

时间:2012-11-18 10:23:17

标签: php arrays if-statement explode

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

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 个答案:

答案 0 :(得分:3)

你需要做一些调试。扔出像

这样的行
$check = $sections[3];
echo "check = '$check'";    // Debug print

如果用这样的引号打印出来,你可能会看到有前导/尾随空格。如果是这种情况,只需拨打trim()就可以了解它。

答案 1 :(得分:1)

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

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

所以你应该使用:

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

答案 2 :(得分:0)

尝试使用

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