2014-10-06 146 views
0

我有一个条件语句在PHP中,当我添加一个OR逻辑运算符它不能按预期工作,在下面的例子中,它返回我试图阻止的代码它在做。多个条件PHP与OR逻辑运算符不返回false

单独的每个陈述只适用于当他们在一起,因为我有他们下面。重复每个条件的代码似乎效率低下。

if (!is_sp_post_type('profile') || !is_category(array('previews','reviews')) || !is_single(array('previews','reviews'))) { //do stuff };

我看了这个答案Is there a short-circuit OR in PHP that returns the left-most value?,但我仍然停留

+0

你实际期望什么逻辑?如果主要测试中的任何一个失败,你想“做些什么”?我的意思是,如果它不是type => profile OR not category =>评论OR not single =>评论? – fast 2014-10-06 11:44:40

+0

我想做的东西只要它不符合任何一个主要条件。 – stemie 2014-10-06 14:06:00

回答

1

只是利用AND&&)运算符。

OR运算符只需要一个true来执行条件,而AND运算符需要所有语句都为true。

我不能百分百确定你想什么来实现的,但我也建议有一个重新审视一下你的NOT!)运营商和它是如何在你的代码中使用

+0

你是否认为OP的逻辑错误?最好要求澄清。 – fast 2014-10-06 11:45:59

+0

你真的知道操作员是如何工作的吗?由于您的指责,我不会假设您因为指责我并且低估了我的答案,所以这纯粹是一个合乎逻辑的问题。我不需要对此做任何澄清。这不是我的第一个关于这样的主题的问题 – 2014-10-06 11:52:16

+0

你自己说,你不确定.. OP谈到“为每个条件重复代码效率低下”,所以它看起来他实际上需要OR语义。但谁知道(所以我问)。 – fast 2014-10-06 11:56:40

1

我被傻,应该使用&&

if (!is_sp_post_type('profile') && !in_category(array('previews','reviews')) && !is_single(array('previews','reviews'))) { //do stuff }

感谢一直到Pieter Goosen指出这一点 - 他删除他的回答虽然让我无法选择它。

+0

非常适合张贴并给我一些信用。赞赏。+1 – 2014-10-06 15:12:25

+0

当然,我已经接受你的答案和+1。Dankie :) – stemie 2014-10-06 15:14:09

+0

Plesier ou maat :-) – 2014-10-06 15:15:11