0

我的 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位置。

4

2 回答 2

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
于 2012-12-14T19:09:33.007 回答
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 必须评估为真,整个条件才能评估为真。

于 2012-12-14T19:09:41.797 回答