2010-10-08 56 views
-1

任何想法为什么这不起作用?在IF中使用OR

if($page->Slug != 'water-filters' || $page->Slug != 'pet-care' || $page->Slug != 'books') { 
    //do something 
} 
+2

定义*这不是工作*请。为我完美工作:http://codepad.org/9tvMPsH7你必须告诉你**想要发生什么**。 – 2010-10-08 07:57:19

+1

什么是$ page-> Slug和实际发生了什么?如果我在||之后删除所有内容,则为 – fabrik 2010-10-08 07:57:23

+0

它工作,即只有一张支票。如果我使用OR,它不会工作... – Andy 2010-10-08 07:57:57

回答

10

我认为你的意思是AND而不是OR beca使用你使用不等于。

通过使用不等于你的方式声明将永远是真实的,如果$ page-> Slug等于'水过滤器'它不等于'pet-care',因此if语句作为一个整体返回true。

if($page->Slug != 'water-filters' && $page->Slug != 'pet-care' && $page->Slug != 'books') 
{ 
    //do something 
} 
+0

固定!感谢队友,把它弄错了。这是在我的脑海:) – Andy 2010-10-08 08:01:51

0

$页面级>弹头或者是 '水过滤器' 或 '宠物护理' 或 '书'

+0

正确的队友... – Andy 2010-10-08 07:59:55

0

尝试

== or == or == 

!= and != and != 

: -D

+0

谢谢,就是这样:) – Andy 2010-10-08 08:04:00

+0

!(==或==或==):) – 2010-10-08 08:23:56

0

如果弹头是不是“水过滤器”或不是“宠物护理”或不是“书” ......

好吧,如果这是其中的一个,或任何其他价值,它的定义不是其他两个(或不是全部三个)。所以这种情况总是如此。

1

我猜“做某事”总是得到执行?

if($page->Slug != 'water-filters' || $page->Slug != 'pet-care' || $page->Slug != 'books') 
{ 
    //do something 
} 

对于$ PAGE->弹头的任何值,它总是会不等于这些三个条件之一,因此至少一个(在技术上,至少两个)的发言将永远为真。因为只要三个陈述中的一个是真的,你就使用'OR',整个事情就会成真。

因此,这基本上等于在说

if (true) { 
    //do something 
} 
0

除了什么其他的上面已经说过,这是正确的也是,试试这个语法的可读性。

if(!in_array($page->Slug, array('water-filters', 'pet-care', 'books')) { 
    // Do something 
} 
+0

感谢这是一个很好的方式做到这一点。 – Andy 2010-10-29 21:52:54