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]
可以包含你不需要的空白。对吧。这就是为什么我在回答中说了这一点。我不确定这与==
有什么关系。