Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果条件总是返回true_Php_Arrays_If Statement_Explode - Fatal编程技术网

Php 如果条件总是返回true

Php 如果条件总是返回true,php,arrays,if-statement,explode,Php,Arrays,If Statement,Explode,我逐行读取文本文件,每行都有逗号分隔的值。范例 Name,Phone,URL,notavailable 读数正常,脚本正确返回行。最后一个值为“可用”或“不可用” 我正在爆炸一条像这样的线 $sections = explode(",", $line); 它回来了 Array ( [0] => Name [1] => Phone [2] => URL [3] => notavailable

我逐行读取文本文件,每行都有逗号分隔的值。范例

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。我想不出来。我试了很多次。如果有人能指出我脚本中的错误,那将非常有帮助


提前谢谢

您需要进行一些调试。像这样排队

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

如果用这样的引号将其打印出来,您可能会看到前导/尾随空格。如果是这种情况,只需对进行简单的调用即可解决。

您需要进行一些调试。像这样排队

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

如果用这样的引号将其打印出来,您可能会看到前导/尾随空格。如果是这种情况,一个简单的调用就可以了。

$a===b Equal TRUE,如果键入杂耍后$a等于$b。 $a===$b如果$a等于$b,并且它们的类型相同,则为同一TRUE

当您读取文件时,也会读取空格,所以需要对其进行修剪

因此,您应该使用:

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

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

当您读取文件时,也会读取空格,所以需要对其进行修剪

因此,您应该使用:

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

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

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

我真的认为
==
在这里并不合适。即使没有
==
你也需要使用
修剪
功能来删除空白,因为你的
$section[3]
可以包含你不需要的空白。对。这就是为什么我在回答中说了这一点。我不确定这与
===
有什么关系。我真的不认为
===
在这里合适。即使没有
===
你也需要使用
trim
函数删除空白,因为你的
$section[3]
可以包含你不需要的空白。对吧。这就是为什么我在回答中说了这一点。我不确定这与
==
有什么关系。