我的if语句一直在查看我的一个变量并查看or语句并返回true。我不喜欢在显示之前描述编码......
if($relLoc[1] <= "32" AND $map['locationpadding'] == "0px 0px -32px 0px" OR $map['locationpadding'] == "0px 0px -32px -32px" OR $map['locationpadding'] == "0px -32px -32px 0px")
{
die();
}
所以,如果我在$map['locationpadding'] == "0px 0px -32px -32px"
,那么
$relLoc[1] == "380"
die();
仍然执行。
但是,如果我在0px 0px -32px 0px
它将不会执行,直到我在32
位置。
答案 0 :(得分:2)
您没有正确分组逻辑语句。我不知道PHP所以语法可能会关闭但你基本上想要这个:
if($relLoc[1] <= "32" AND **(** $map['locationpadding'] == "0px 0px -32px 0px" OR $map['locationpadding'] == "0px 0px -32px -32px" OR $map['locationpadding'] == "0px -32px -32px 0px"**)** ){
die();
}
注意附加的括号表示正确的布尔语句组。您在原始帖子中所做的是:
if relLoc == 32 AND $map['locationpadding'] == "0px 0px -32px 0px
+
OR $map['locationpadding'] == "0px 0px -32px -32px"
+
OR $map['locationpadding'] == "0px -32px -32px 0px
所以在你提供的样本中就是这样:
$map['locationpadding'] == "0px 0px -32px -32px" and the $relLoc[1] == "380"
是:
False + True + False = True
答案 1 :(得分:0)
看起来你想要:
if($relLoc[1] <= "32" AND ($map['locationpadding'] == "0px 0px -32px 0px" OR $map['locationpadding'] == "0px 0px -32px -32px" OR $map['locationpadding'] == "0px -32px -32px 0px")){
// ^ added ^ added
使用括号分隔子条件,否则您的第一个条件变得不那么相关,因为在此之后您有OR x OR x OR x,因此只有一个OR必须evauluate为true才能将整个条件评估为true。 / p>